问题:
在 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中文网其他相关文章!