問題:
在Laravel 的架構產生器/遷移中,使用者尋求有關如何建立預設值為時間戳列的指導更新CURRENT_TIMESTAMP 時的CURRENT_TIMESTAMP。對於建立和更新的列,timestamps() 函數目前預設為 0000-00-00 00:00。
解決方案:
設定a 的預設值使用Laravel 遷移將時間戳列設定為CURRENT_TIMESTAMP,使用DB::raw():
$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP'));
從Laravel 5.1.25 開始,您可以使用useCurrent()列修飾符來簡化此操作:
$table->timestamp('created_at')->useCurrent();
對於MySQL,ON UPDATE CURRENT_TIMESTAMP 可以透過DB::raw():
$table->timestamp('updated_at')->default(DB::raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'));
開始使用Laravel 8.36.0,useCurrent( ) 和useCurrentOnUpdate()一起可以達到相同的效果:
$table->timestamp('updated_at')->useCurrent()->useCurrentOnUpdate();
陷阱:
感謝 @andrewhl 提出的 Laravel 4.x 問題和 @ChanakaKarunarathne 提出的使用CurrentOnUpdate() 快捷方式。
以上是如何在 Laravel 遷移中將預設時間戳列設定為 CURRENT_TIMESTAMP?的詳細內容。更多資訊請關注PHP中文網其他相關文章!