Frage

Ich denke, der Titel sagt es:Ich möchte ISO 8601 mit Zeitzonen als Standard-DateTime-Format in Laravels Eloquent verwenden.Ich schaff das

class mEloquent extends Eloquent {

   protected function getDateFormat()
   {
       return 'YYYY-MM-DDThh:mm:ss.sTZD';
   }

}

Alle meine Modelle werden mEloquent erweitern.Aber wie soll ich die Tabellen aufbauen?Nur

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;

class CreateUsersTable extends Migration {

/**
 * Run the migrations.
 *
 * @return void
 */
public function up()
{
    Schema::create('users', function(Blueprint $table)
    {
        $table->increments('id');
        $table->string('firstName');
        $table->string('lastName');
        $table->string('email')->unique();
        $table->string('password');
        $table->timestamps();
    });
} ......

wie normal?Wie kann ich dieses Datumsformat vergleichen?Oder sollte ich einfach die Standardeinstellung verwenden und die Zeitzone separat speichern?

War es hilfreich?

Lösung

Es ist wirklich einfach, wenn Sie die Dokumente befolgen.

PHP date Funktion unterstützt ISO 8601 seit PHP5 und wir können es erhalten, indem wir das übergeben 'c' Formatzeichen.

http://php.net/manual/en/function.date.php

Das Laravel-Modell konvertiert Datumsattribute in Carbon Objekte.Kohlenstoff erstreckt sich DateTime welches das hat format Funktion, die alle unterstützt date Formatzeichen.

Sie können ganz einfach einen Accessor (oder sogar ein neues benutzerdefiniertes Attribut) erstellen, um ein Datumsattribut zu ändern.Dann verwenden Sie den Carbon format Methode, in die es geändert werden soll ISO 8601 Format.

In einem Laravel-Modell können wir also etwa Folgendes tun:

public function getPublishedAt8601Attribute()
{
    return $this->published_at->format('c');
}

und dann können wir wie folgt auf das Attribut zugreifen:

// Prints something like: 2016-10-13T21:48:00+03:00
echo $post->published_at_8601;

Andere Tipps

Wie in den Dokumenten erwähnt, fügen Sie dies Ihrer Basisklasse "Meloquent"

hinzu. generasacodicetagpre.

Sie können auch Datums-Serialisationen überprüfen: https://laravel.com/docs/5.6/eloquent-serialization#Date-Serialisierung

generasacodicetagpre.

Ausgang

2018-04-14T18: 35: 58 + 00: 00

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top