我刚开始与Laravel合作,所以我已经习惯了如何完成任务。
我一直在尝试做一些我似乎无法找到在线示例的事情。我正在使用“架构”构建器来创建新表。
我想要的是一个日期时间字段,其默认值为NULL,但要“ON UPDATE CURRENT_TIMESTAMP”。
我尝试了很多东西,但这是我最近的尝试:
$table->dateTime('opened_on')->default(Capsule::raw('NULL ON UPDATE CURRENT_TIMESTAMP'));
使用此代码,我得到“open_on'的默认值无效”错误。
任何反馈或建议都将不胜感激。
答案 0 :(得分:6)
我通常使用此语法进行迁移:
$table->timestamp('created_at')->default(\DB::raw('CURRENT_TIMESTAMP'));
$table->timestamp('updated_at')->default(\DB::raw('CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP'));
答案 1 :(得分:1)
$table->timestamp('opened_on')->useCurrent();
Set Default null database table
ALTER TABLE tbl MODIFY `opened_on` DATE DEFUALT NULL;
您必须通过migration in laravel
创建数据库表答案 2 :(得分:0)
不要重新发明轮子并使用内置的Laravel功能。只需添加->timestamps()
即可创建created_at
和updated_at
列。当您使用Eloquent更新数据时,Laravel会将当前日期和时间设置为updated_at
列。此外,updated_at
将自动转换为Carbon实例。
https://laravel.com/docs/5.4/eloquent#eloquent-model-conventions(查看时间戳部分)
答案 3 :(得分:0)
对我来说,默认情况下创建一个设置为NULL的日期时间字段更容易,然后更新PHP中的时间戳而不是让MySQL这样做。
答案 4 :(得分:0)
https://laravel.com/docs/5.1/eloquent-mutators#date-mutators
你可以使用mutators。