Heim  >  Artikel  >  Backend-Entwicklung  >  Wie stelle ich Laravel-Zeitstempel auf CURRENT_TIMESTAMP BEI UPDATE CURRENT_TIMESTAMP ein?

Wie stelle ich Laravel-Zeitstempel auf CURRENT_TIMESTAMP BEI UPDATE CURRENT_TIMESTAMP ein?

DDD
DDDOriginal
2024-10-20 12:17:02254Durchsuche

How to Set Laravel Timestamps to CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP?

Standardzeitstempel bei Laravel-Migrationen

Laravels Schema Builder vereinfacht die Manipulation von Datenbankschemata, aber das Festlegen des Standardwerts einer Zeitstempelspalte auf den aktuellen Zeitstempel kann eine Herausforderung sein.

Problem:

In Laravel generiert timestamps() Zeitstempelspalten mit einem Standardwert von 0000-00-00 00:00. Wie können wir diesen Standard mithilfe von Laravel-Migrationen auf CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP festlegen?

Lösung:

Um CURRENT_TIMESTAMP als Standardwert für eine Zeitstempelspalte anzugeben, verwenden Sie DB: :raw():

<code class="php">$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP'));</code>

Ab Laravel 5.1.25 verwenden Sie den Spaltenmodifikator useCurrent():

<code class="php">$table->timestamp('created_at')->useCurrent();</code>

Für ON UPDATE-Klauseln können wir DB::raw verwenden ():

<code class="php">$table->timestamp('updated_at')->default(DB::raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'));</code>

Seit Laravel 8.36.0 verwenden Sie den Modifikator useCurrentOnUpdate():

<code class="php">$table->timestamp('updated_at')->useCurrent()->useCurrentOnUpdate();</code>

Probleme:

  • MySQL: Seit Version 5.7 ist 0000-00-00 00:00:00 kein gültiges Datum mehr. Legen Sie einen gültigen Standardwert fest oder verwenden Sie nullable()-Zeitstempel.
  • PostgreSQL und Laravel 4.x: Geben Sie eine Genauigkeit von Null für CURRENT_TIMESTAMP an, um Probleme beim Parsen im Mikrosekundenbereich zu vermeiden.
<code class="php">$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP(0)'));</code>

Das obige ist der detaillierte Inhalt vonWie stelle ich Laravel-Zeitstempel auf CURRENT_TIMESTAMP BEI UPDATE CURRENT_TIMESTAMP 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