Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Saya Menetapkan Cap Masa Lalai kepada Cap Masa Semasa dalam Migrasi Laravel?

Bagaimanakah Saya Menetapkan Cap Masa Lalai kepada Cap Masa Semasa dalam Migrasi Laravel?

Barbara Streisand
Barbara Streisandasal
2024-10-20 11:40:02539semak imbas

How Do I Set the Default Timestamp to the Current Timestamp in Laravel Migrations?

Migrasi Laravel: Menetapkan Cap Masa Lalai kepada Cap Masa Semasa

Dalam Laravel, cap masa biasanya digunakan untuk menjejak aktiviti, seperti semasa rekod dibuat atau dikemas kini. Secara lalai, cap masa ini ditetapkan kepada 0000-00-00 00:00. Walau bagaimanapun, adalah berguna untuk menetapkan nilai lalai secara automatik kepada cap masa semasa.

Menggunakan DB::raw()

Untuk cap masa yang anda ingin kemas kini dengan kerap, anda boleh menggunakan DB ::raw() berfungsi untuk menentukan CURRENT_TIMESTAMP sebagai nilai lalai:

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

Ini memastikan bahawa lajur create_at akan sentiasa mengandungi cap masa semasa, kedua-dua apabila rekod dibuat pada mulanya dan apabila ia dikemas kini.

Menggunakan useCurrent() atau useCurrentOnUpdate()

Sebagai alternatif, anda boleh menggunakan kaedah useCurrent() atau useCurrentOnUpdate() untuk mencapai hasil yang sama:

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

The useCurrent () kaedah menetapkan cap masa semasa sebagai nilai lalai untuk kedua-dua penciptaan dan kemas kini, manakala useCurrentOnUpdate() menetapkan nilai lalai untuk kemas kini sahaja.

Klausa MySQL ON UPDATE

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

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

Gotchas

  • MySQL: Sejak MySQL 5.7, anda mungkin perlu menetapkan secara eksplisit nilai lalai yang sah untuk lajur cap masa, kerana 0000-00-00 00:00:00 tidak lagi diterima.
  • PostgreSQL & Laravel 4.x: Dalam Laravel 4.x, anda mungkin mengalami masalah dengan menghurai cap masa jika anda menggunakan CURRENT_TIMESTAMP dengan ketepatan lalai. Gunakan CURRENT_TIMESTAMP(0) sebaliknya untuk mengelakkan perkara ini.

Atas ialah kandungan terperinci Bagaimanakah Saya Menetapkan Cap Masa Lalai kepada Cap Masa Semasa 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