Stellen Sie das Standarddatenbank-DateFormat auf ISO 8601 mit Zeitzonen in Laravel ein
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?
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
Ausgang
2018-04-14T18: 35: 58 + 00: 00