Rumah > pembangunan bahagian belakang > tutorial php > 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
Lepaskan: 2024-10-20 12:26:02
asal
562 orang telah melayarinya

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'));
Salin selepas log masuk

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'));
Salin selepas log masuk

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

$table->timestamp('created_at')->useCurrent();
Salin selepas log masuk

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();
Salin selepas log masuk

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)'));
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan