Heim > Backend-Entwicklung > PHP-Tutorial > 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
Freigeben: 2024-10-20 12:26:02
Original
507 Leute haben es durchsucht

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

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

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

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

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

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

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!

Quelle:php
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage