Heim > Datenbank > MySQL-Tutorial > Hauptteil

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

DDD
Freigeben: 2024-11-22 08:14:15
Original
731 Leute haben es durchsucht

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'));
Nach dem Login kopieren

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

$table->timestamp('created_at')->useCurrent();
Nach dem Login kopieren

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'));
Nach dem Login kopieren

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

$table->timestamp('updated_at')->useCurrent()->useCurrentOnUpdate();
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage