问题陈述
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();
注意事项
$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP(0)'));
感谢 @andrewhl 识别 Laravel 4.x PostgreSQL 问题,以及 @ChanakaKarunarathne 提供 useCurrentOnUpdate() 快捷方式。
以上是如何使用 Laravel 迁移用当前时间戳填充时间戳列?的详细内容。更多信息请关注PHP中文网其他相关文章!