在Laravel 遷移中將時間戳列的預設值設定為當前時間戳
問題: 如何建立問題時間戳列的預設值為CURRENT_TIMESTAMP 並在Laravel 遷移中將其更新為CURRENT_TIMESTAMP?
Laravel 的 Schema Builder 沒有明確提供將時間戳列的預設值設為 CURRENT_TIMESTAMP 的方法。
答案:
要將預設值設為CURRENT_TIMESTAMP,請使用DB::raw() 方法定義原始表達式:
$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP'));
對於MySQL,您可以另外,在DB::raw() 中使用ON UPDATE 子句:
$table->timestamp('updated_at')->default(DB::raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'));
從Laravel 5.1.25 開始,您可以使用useCurrent() 方法來簡化此操作:
$table->timestamp('created_at')->useCurrent();
在Laravel 8.36.0 及更高版本中,useCurrent() 可以與useCurrentOnUpdate() 方法一起用於預設值和更新值:
$table->timestamp('updated_at')->useCurrent()->useCurrentOnUpdate();
$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP(0)'));Laravel 4.x 中的 PostgreSQL: 為 CURRENT_TIMESTAMP 函數指定零精確度以避免微秒錯誤。
以上是如何在 Laravel 遷移中將時間戳列的預設值設為 CURRENT_TIMESTAMP 並自動更新?的詳細內容。更多資訊請關注PHP中文網其他相關文章!