Heim >Datenbank >MySQL-Tutorial >Wie setze ich Standard-Zeitstempelspalten in Laravel-Migrationen auf CURRENT_TIMESTAMP?

Wie setze ich Standard-Zeitstempelspalten in Laravel-Migrationen auf CURRENT_TIMESTAMP?

DDD
DDDOriginal
2024-11-22 08:14:15732Durchsuche

How to Set Default Timestamp Columns to CURRENT_TIMESTAMP in Laravel Migrations?

Laravel: Standard-Zeitstempelspalten auf den aktuellen Zeitstempel setzen

Problem:

In Laravel's Schema Builder/Migrations, Benutzer Suchen Sie nach Anleitungen zum Erstellen einer Zeitstempelspalte mit dem Standardwert CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP. Die Funktion timestamps() ist derzeit standardmäßig auf 0000-00-00 00:00 für erstellte und aktualisierte Spalten eingestellt.

Lösung:

So legen Sie den Standardwert von a fest Zeitstempelspalte mithilfe von Laravel-Migrationen in CURRENT_TIMESTAMP umwandeln DB::raw():

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

Seit Laravel 5.1.25 können Sie dies mit dem Spaltenmodifikator useCurrent() vereinfachen:

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

Für MySQL ist ON UPDATE CURRENT_TIMESTAMP möglich kann über DB::raw() verwendet werden:

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

Beginnend mit Laravel 8.36.0 können useCurrent() und useCurrentOnUpdate() zusammen dasselbe erreichen:

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

Probleme:

  • MySQL: Vor 5.7 war 0000-00-00 00:00:00 ungültig. Verwenden Sie useCurrent() oder nullable(), um dieses Problem zu beheben.
  • PostgreSQL & Laravel 4.x: Die Standardgenauigkeit für Zeitstempelspalten verursachte Probleme beim Carbon-Parsing. Verwenden Sie DB::raw('CURRENT_TIMESTAMP(0)'), um eine Genauigkeit von Null sicherzustellen.
  • PostgreSQL & Laravel 5.0: Die Standardgenauigkeit ist jetzt Null, wodurch dieses Problem verhindert wird.

Danke an @andrewhl für die Laravel 4.x-Ausgabe und @ChanakaKarunarathne für die Verwenden Sie die Verknüpfung „CurrentOnUpdate()“.

Das obige ist der detaillierte Inhalt vonWie setze ich Standard-Zeitstempelspalten in Laravel-Migrationen auf CURRENT_TIMESTAMP?. 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