首頁 >後端開發 >php教程 >如何使用 Laravel 遷移以目前時間戳記填滿時間戳列?

如何使用 Laravel 遷移以目前時間戳記填滿時間戳列?

Barbara Streisand
Barbara Streisand原創
2024-10-20 12:28:301080瀏覽

How Do I Populate Timestamp Columns with Current Timestamp Using Laravel Migrations?

如何使用Laravel 遷移使用當前時間戳填充時間戳列

問題陳述

Laravel 中時間列的戳預設值使用架構產生器的遷移設定為「0000-00-00 00:00:00」;我們如何將其修改為「CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP」?

解決方案

利用DB::raw() 將CURRENT_TIMESTAMP 合併為列的預設值:

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

或者,在Laravel 5.1 .25 之後,您可以直接在時間戳列上使用useCurrent() 方法:

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

對於MySQL,包括使用DB: 的ON UPDATE 子句: raw() 或者,從Laravel 8.36.0開始,useCurrentOnUpdate() 方法:

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

注意事項

  • MySQL(版本5.7 及以上) ):0005> -00-00 00:00:00”不再有效。因此,為時間戳記列提供有效的預設值(例如 useCurrent() 或 nullable())。
  • PostgreSQL (Laravel 4.x): 確保CURRENT_TIMESTAMP 指定零精度以防止由於小數秒導致的時間戳解析錯誤:
$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP(0)'));

感謝@andrewhl 識別Laravel 4.x PostgreSQL 問題,以及@ChanakaKarunarathne 提供useCurrentOnUpdate() 快捷方式。

以上是如何使用 Laravel 遷移以目前時間戳記填滿時間戳列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn