Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menetapkan Lajur Cap Masa Lalai kepada CURRENT_TIMESTAMP dalam Migrasi Laravel?

Bagaimana untuk Menetapkan Lajur Cap Masa Lalai kepada CURRENT_TIMESTAMP dalam Migrasi Laravel?

DDD
Lepaskan: 2024-11-22 08:14:15
asal
764 orang telah melayarinya

How to Set Default Timestamp Columns to CURRENT_TIMESTAMP in Laravel Migrations?

Laravel: Menetapkan Lajur Cap Masa Lalai kepada Cap Masa Semasa

Masalah:

Dalam Pembina/Migrasi Skema Laravel, pengguna dapatkan panduan tentang cara membuat lajur cap masa dengan nilai lalai sebanyak CURRENT_TIMESTAMP PADA KEMASKINI CURRENT_TIMESTAMP. Fungsi cap masa() pada masa ini lalai kepada 0000-00-00 00:00 untuk kedua-dua lajur yang dibuat dan dikemas kini.

Penyelesaian:

Untuk menetapkan nilai lalai a lajur cap masa ke CURRENT_TIMESTAMP menggunakan migrasi Laravel, gunakan DB::raw():

$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP'));
Salin selepas log masuk

Sejak Laravel 5.1.25, anda boleh memudahkan ini menggunakan pengubah lajur useCurrent():

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

Untuk MySQL, PADA KEMASKINI CURRENT_TIMESTAMP boleh digunakan melalui DB::raw():

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

Bermula dengan Laravel 8.36.0, useCurrent() dan useCurrentOnUpdate() bersama-sama boleh mencapai perkara yang sama:

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

Gotchas:

  • MySQL: Sebelum 5.7, 0000-00-00 00:00:00 adalah tidak sah. Gunakan useCurrent() atau nullable() untuk menyelesaikan masalah ini.
  • PostgreSQL & Laravel 4.x: Ketepatan lalai untuk lajur cap masa menyebabkan masalah dengan penghuraian Karbon. Gunakan DB::raw('CURRENT_TIMESTAMP(0)') untuk memastikan ketepatan sifar.
  • PostgreSQL & Laravel 5.0 : Ketepatan lalai kini sifar, menghalang isu ini.

Terima kasih kepada @andrewhl untuk isu Laravel 4.x dan @ChanakaKarunarathne untuk pintasan useCurrentOnUpdate().

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

sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan