Laravel中useCurrentOnUpdate方法不生效 timestamp更新时未自动更新问题
问题原因及解决方案
1. 首要原因:Laravel版本不兼容
useCurrentOnUpdate() 是 Laravel 8.0 版本才正式加入的迁移方法,如果你的项目使用的 Laravel 版本低于 8.0,调用该方法不会报错但也不会生成对应的数据库字段属性,这是你遇到问题的最常见诱因。
2. 兼容所有版本的解决方法
直接使用原生SQL声明字段属性,替换你的updated_at字段定义代码即可:
// 需确保顶部引入了DB门面,或者直接写\DB::raw $table->timestamp('updated_at')->default(\DB::raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'));
就算你使用的是 8.0 及以上版本的 Laravel,这种原生写法也比框架封装的方法更稳定,不会出现不生效的问题。
3. 验证是否生效
重新执行迁移后,执行SQL命令show create table user查看完整建表语句,只要updated_at字段的定义里包含ON UPDATE CURRENT_TIMESTAMP,就说明配置生效,后续更新数据时字段会自动刷新时间。
内容的提问来源于stack exchange,提问作者user16542536
相关产品推荐
相关产品推荐

