Heim  >  Artikel  >  Backend-Entwicklung  >  Wie fülle ich Zeitstempelspalten mithilfe von Laravel-Migrationen mit dem aktuellen Zeitstempel?

Wie fülle ich Zeitstempelspalten mithilfe von Laravel-Migrationen mit dem aktuellen Zeitstempel?

Barbara Streisand
Barbara StreisandOriginal
2024-10-20 12:28:30961Durchsuche

How Do I Populate Timestamp Columns with Current Timestamp Using Laravel Migrations?

So füllen Sie Zeitstempelspalten mithilfe von Laravel-Migrationen mit dem aktuellen Zeitstempel

Problemstellung

Standardwerte für Zeitstempelspalten in Laravel Migrationen, die den Schema Builder verwenden, werden auf „0000-00-00 00:00:00“ eingestellt. Wie ändern wir dies in „CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP“?

Lösung

Verwenden Sie DB::raw(), um CURRENT_TIMESTAMP als Standardwert einer Spalte zu integrieren:

$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP'));

Alternativ können Sie nach Laravel 5.1.25 die Methode useCurrent() direkt in der Zeitstempelspalte verwenden:

$table->timestamp('created_at')->useCurrent();

Fügen Sie für MySQL die ON UPDATE-Klausel mit DB ein: raw() oder ab Laravel 8.36.0 die Methode useCurrentOnUpdate():

$table->timestamp('updated_at')->useCurrent()->useCurrentOnUpdate();

Vorsichtsmaßnahmen

  • MySQL (ab Version 5.7). ): '0000-00-00 00:00:00' ist nicht mehr gültig. Geben Sie daher einen gültigen Standardwert (z. B. useCurrent() oder nullable()) für Zeitstempelspalten an.
  • PostgreSQL (Laravel 4.x): Stellen Sie sicher, dass Sie für CURRENT_TIMESTAMP eine Genauigkeit von Null angeben, um dies zu verhindern Zeitstempel-Parsing-Fehler aufgrund von Sekundenbruchteilen:
$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP(0)'));

Vielen Dank an @andrewhl für die Identifizierung des Laravel 4.x PostgreSQL-Problems und @ChanakaKarunarathne für die Verknüpfung useCurrentOnUpdate().

Das obige ist der detaillierte Inhalt vonWie fülle ich Zeitstempelspalten mithilfe von Laravel-Migrationen mit dem aktuellen Zeitstempel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn