Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Saya Menetapkan Nilai Lalai Lajur Cap Masa kepada CURRENT_TIMESTAMP dan Kemas Kini Auto dalam Migrasi Laravel?

Bagaimanakah Saya Menetapkan Nilai Lalai Lajur Cap Masa kepada CURRENT_TIMESTAMP dan Kemas Kini Auto dalam Migrasi Laravel?

Barbara Streisand
Barbara Streisandasal
2024-10-20 12:26:02382semak imbas

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

Menetapkan Nilai Lalai Lajur Cap Masa kepada Cap Masa Semasa dalam Migrasi Laravel

Soalan: Bagaimanakah saya boleh mencipta cap masa lajur dengan nilai lalai CURRENT_TIMESTAMP dan kemas kini kepada CURRENT_TIMESTAMP dalam penghijrahan Laravel?

Pembina Skema Laravel tidak secara eksplisit menyediakan kaedah untuk menetapkan nilai lalai lajur cap waktu kepada CURRENT_TIMESTAMP.

Jawapan:

Untuk menetapkan nilai lalai kepada CURRENT_TIMESTAMP, gunakan kaedah DB::raw() untuk mentakrifkan ungkapan mentah:

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

Untuk MySQL, anda boleh selain itu gunakan klausa ON UPDATE dalam DB::raw():

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

Sehingga Laravel 5.1.25, anda boleh menggunakan kaedah useCurrent() untuk memudahkan ini:

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

Dalam Laravel 8.36.0 dan ke atas, useCurrent() boleh digunakan dengan kaedah useCurrentOnUpdate() untuk nilai lalai dan semasa kemas kini:

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

Gotchas:

  • MySQL: Bermula dengan versi 5.7, 0000-00-00 00:00:00 tidak lagi sah sebagai cap waktu. Gunakan useCurrent() atau benarkan nilai nol.
  • PostgreSQL dalam Laravel 4.x: Tentukan ketepatan sifar pada fungsi CURRENT_TIMESTAMP untuk mengelakkan ralat mikrosaat.
$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP(0)'));

Atas ialah kandungan terperinci Bagaimanakah Saya Menetapkan Nilai Lalai Lajur Cap Masa kepada CURRENT_TIMESTAMP dan Kemas Kini Auto dalam Migrasi Laravel?. 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