Heim >Datenbank >MySQL-Tutorial >Wie lege ich Standard-Zeitstempelwerte in Laravel-Migrationen fest?

Wie lege ich Standard-Zeitstempelwerte in Laravel-Migrationen fest?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-22 14:59:13867Durchsuche

How to Set Default Timestamp Values in Laravel Migrations?

Standardwerte für Zeitstempel mithilfe von Laravel-Migrationen festlegen

Der Laravel Schema Builder bietet eine praktische Möglichkeit, Datenbanktabellen zu erstellen und zu ändern. Allerdings stoßen Benutzer gelegentlich auf Probleme beim Festlegen von Standard-Zeitstempelwerten auf den aktuellen Zeitstempel beim Erstellen und Aktualisieren.

Die timestamps()-Methode

Typischerweise die timestamps()-Methode wird verwendet, um die Zeitstempelspalten „created_at“ und „update_at“ automatisch zu verwalten. Diese Methode setzt ihre Standardwerte jedoch auf „0000-00-00 00:00:00“.

Lösung: DB::raw() und useCurrent()

Um einen Standardwert von CURRENT_TIMESTAMP festzulegen, verwenden Sie DB::raw():

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

As Von Laravel 5.1.25 können Sie auch die Methode useCurrent() verwenden:

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

MySQL ON UPDATE-Klausel

Für MySQL können Sie die ON UPDATE-Klausel angeben -Klausel mit DB::raw():

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

Ab Laravel 8.36.0 ist dies möglich Verwenden Sie useCurrentOnUpdate() in Verbindung mit useCurrent():

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

Probleme

  • MySQL: Seit MySQL 5.7, '0000 -00-00 00:00:00' ist ungültig. Verwenden Sie useCurrent() oder machen Sie Zeitstempel nullbar.
  • PostgreSQL & Laravel 4.x: Verwenden Sie CURRENT_TIMESTAMP(0), um Nullgenauigkeit sicherzustellen und Probleme beim Carbon-Parsing zu vermeiden.

Das obige ist der detaillierte Inhalt vonWie lege ich Standard-Zeitstempelwerte in Laravel-Migrationen fest?. 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