Heim >Backend-Entwicklung >PHP-Tutorial >Wie stelle ich den Standardzeitstempel in Laravel-Migrationen auf den aktuellen Zeitstempel ein?

Wie stelle ich den Standardzeitstempel in Laravel-Migrationen auf den aktuellen Zeitstempel ein?

Barbara Streisand
Barbara StreisandOriginal
2024-10-20 11:40:02622Durchsuche

How Do I Set the Default Timestamp to the Current Timestamp in Laravel Migrations?

Laravel-Migrationen: Standardzeitstempel auf aktuellen Zeitstempel setzen

In Laravel werden Zeitstempel häufig verwendet, um Aktivitäten zu verfolgen, z. B. wann ein Datensatz erstellt oder aktualisiert wurde. Standardmäßig sind diese Zeitstempel auf 0000-00-00 00:00 eingestellt. Es kann jedoch sinnvoll sein, den Standardwert automatisch auf den aktuellen Zeitstempel zu setzen.

Verwendung von DB::raw()

Für Zeitstempel, die Sie regelmäßig aktualisieren möchten, können Sie die Datenbank verwenden ::raw()-Funktion zum Angeben von CURRENT_TIMESTAMP als Standardwert:

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

Dadurch wird sichergestellt, dass die Spalte „created_at“ immer den aktuellen Zeitstempel enthält, sowohl bei der ersten Erstellung des Datensatzes als auch bei seiner Aktualisierung.

Verwenden von useCurrent() oder useCurrentOnUpdate()

Alternativ können Sie die Methoden useCurrent() oder useCurrentOnUpdate() verwenden, um das gleiche Ergebnis zu erzielen:

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

Die useCurrent ()-Methode weist den aktuellen Zeitstempel als Standardwert sowohl für die Erstellung als auch für Aktualisierungen zu, während useCurrentOnUpdate() den Standardwert nur für Aktualisierungen festlegt.

MySQL ON UPDATE-Klausel

Für MySQL ist dies möglich Verwenden Sie die ON UPDATE-Klausel in DB::raw():

$table->timestamp('updated_at')->default(DB::raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'));

Gotchas

  • MySQL: Seit MySQL 5.7 müssen Sie möglicherweise explizit festlegen ein gültiger Standardwert für Zeitstempelspalten, da 0000-00-00 00:00:00 nicht mehr akzeptiert wird.
  • PostgreSQL & Laravel 4.x: In Laravel 4.x, Sie Es kann zu Problemen beim Parsen von Zeitstempeln kommen, wenn Sie CURRENT_TIMESTAMP mit einer Standardgenauigkeit verwenden. Verwenden Sie stattdessen CURRENT_TIMESTAMP(0), um dies zu vermeiden.

Das obige ist der detaillierte Inhalt vonWie stelle ich den Standardzeitstempel in Laravel-Migrationen auf den aktuellen Zeitstempel ein?. 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