Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menetapkan Cap Masa Laravel kepada CURRENT_TIMESTAMP PADA KEMASKINI CURRENT_TIMESTAMP?

Bagaimana untuk Menetapkan Cap Masa Laravel kepada CURRENT_TIMESTAMP PADA KEMASKINI CURRENT_TIMESTAMP?

DDD
DDDasal
2024-10-20 12:17:02249semak imbas

How to Set Laravel Timestamps to CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP?

Tamp Masa Lalai dengan Migrasi Laravel

Pembina Skema Laravel memudahkan manipulasi skema pangkalan data, tetapi menetapkan nilai lalai lajur cap waktu kepada cap masa semasa boleh menjadi satu cabaran.

Masalah:

Dalam Laravel, cap waktu() menjana lajur cap masa dengan nilai lalai 0000-00-00 00:00. Bagaimanakah kita boleh menetapkan lalai ini kepada CURRENT_TIMESTAMP PADA KEMASKINI CURRENT_TIMESTAMP menggunakan migrasi Laravel?

Penyelesaian:

Untuk menentukan CURRENT_TIMESTAMP sebagai nilai lalai untuk lajur cap waktu, gunakan DB: :raw():

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

Setakat Laravel 5.1.25, gunakan pengubah lajur useCurrent():

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

Untuk klausa ON UPDATE, kita boleh menggunakan DB::raw ():

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

Sejak Laravel 8.36.0, gunakan pengubah useCurrentOnUpdate():

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

Gotchas:

  • MySQL: Sejak versi 5.7, 0000-00-00 00:00:00 bukan lagi tarikh yang sah. Tetapkan lalai yang sah atau gunakan cap waktu nullable().
  • PostgreSQL & Laravel 4.x: Tentukan ketepatan sifar untuk CURRENT_TIMESTAMP untuk mengelakkan isu penghuraian mikrosaat.
<code class="php">$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP(0)'));</code>

Atas ialah kandungan terperinci Bagaimana untuk Menetapkan Cap Masa Laravel kepada CURRENT_TIMESTAMP PADA KEMASKINI CURRENT_TIMESTAMP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn