我刚刚开始与Laravel合作,因此已经习惯了如何完成工作。
我一直在尝试做一些我似乎找不到在线示例的事情。我正在使用模式构建器创建一个新表。
我想要的是一个带有默认值为null的DateTime字段,但要具有" on Update current_timestamp"。
我已经尝试了很多事情,但这是我的最新尝试:
$table->dateTime('opened_on')->default(Capsule::raw('NULL ON UPDATE CURRENT_TIMESTAMP'));
使用此代码,我获得了" opened_on''"错误的"无效默认值。
任何反馈或建议都将不胜感激。
我通常将此语法用于迁移:
$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP'));
$table->timestamp('updated_at')->default(DB::raw('CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP'));
使用 -> laravel
in timestamps()$table->timestamp('opened_on')->useCurrent();
设置默认的空数据库表
ALTER TABLE tbl MODIFY `opened_on` DATE DEFUALT NULL;
您必须通过laravel中的迁移来创建数据库表
不要重新发明车轮并使用内置的laravel功能。只需添加->timestamps()
,它将创建created_at
和updated_at
列。当您使用雄辩更新数据时,Laravel会将当前日期和时间设置为updated_at
列。另外,updated_at
将自动转换为碳实例。
https://laravel.com/docs/5.4/eloquent#eloquent-model-conventions(查看时间戳部分)
对我来说,默认情况下只能创建一个设置为null的DateTime字段,然后更新PHP中的时间戳,而不是让MySQL执行此操作。
https://laravel.com/docs/5.1/eloquent-mutators#date-mutators
您可以为此使用突变器。