Heim  >  Artikel  >  Backend-Entwicklung  >  Wie stelle ich den Standardwert von Zeitstempelspalten auf CURRENT_TIMESTAMP und die automatische Aktualisierung in Laravel-Migrationen ein?

Wie stelle ich den Standardwert von Zeitstempelspalten auf CURRENT_TIMESTAMP und die automatische Aktualisierung in Laravel-Migrationen ein?

Barbara Streisand
Barbara StreisandOriginal
2024-10-20 12:26:02382Durchsuche

How Do I Set the Default Value of Timestamp Columns to CURRENT_TIMESTAMP and Auto Update in Laravel Migrations?

Standardwert der Zeitstempelspalte auf den aktuellen Zeitstempel in Laravel-Migrationen festlegen

Frage: Wie kann ich einen Zeitstempel erstellen? Spalte mit dem Standardwert CURRENT_TIMESTAMP erstellen und bei Laravel-Migrationen auf CURRENT_TIMESTAMP aktualisieren?

Laravels Schema Builder stellt nicht explizit eine Methode bereit, um den Standardwert einer Zeitstempelspalte auf CURRENT_TIMESTAMP festzulegen.

Antwort:

Um den Standardwert auf CURRENT_TIMESTAMP festzulegen, verwenden Sie die Methode DB::raw(), um einen Rohausdruck zu definieren:

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

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

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

Ab Laravel 5.1.25 können Sie die Methode useCurrent() verwenden, um dies zu vereinfachen:

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

In Laravel 8.36.0 und höher kann useCurrent() mit der Methode useCurrentOnUpdate() sowohl für Standard- als auch für Aktualisierungswerte verwendet werden:

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

Probleme:

  • MySQL: Ab Version 5.7 ist 0000-00-00 00:00:00 nicht mehr als Zeitstempel gültig. Verwenden Sie useCurrent() oder lassen Sie Nullwerte zu.
  • PostgreSQL in Laravel 4.x: Geben Sie eine Genauigkeit von Null für die Funktion CURRENT_TIMESTAMP an, um Mikrosekundenfehler zu vermeiden.
$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP(0)'));

Das obige ist der detaillierte Inhalt vonWie stelle ich den Standardwert von Zeitstempelspalten auf CURRENT_TIMESTAMP und die automatische Aktualisierung in Laravel-Migrationen 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