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'));
Sejak Laravel 5.1.25, anda boleh memudahkan ini menggunakan pengubah lajur useCurrent():
$table->timestamp('created_at')->useCurrent();
Untuk MySQL, PADA KEMASKINI CURRENT_TIMESTAMP boleh digunakan melalui DB::raw():
$table->timestamp('updated_at')->default(DB::raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'));
Bermula dengan Laravel 8.36.0, useCurrent() dan useCurrentOnUpdate() bersama-sama boleh mencapai perkara yang sama:
$table->timestamp('updated_at')->useCurrent()->useCurrentOnUpdate();
Gotchas:
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!