在 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 迁移中将时间戳列的默认值设置为 CURRENT_TIMESTAMP 并自动更新?的详细内容。更多信息请关注PHP中文网其他相关文章!