【发布时间】:2018-02-22 19:00:30
【问题描述】:
我很难理解 laravel 中日期字段的内部工作原理。我有一个名为 called_at 的自定义日期字段,我在架构中将其设置为可为空。由于是日期字段I would naturally want it to be a Carbon instance,所以在模型中我将此属性推送到$dates数组中。
protected $dates = ['called_at'];
为了能够通过request('called_at') 输入从控制器设置它,我必须在模型中设置一个mutator。所以我这样设置:
public function setCalledAtAttribute($date){
$this->attributes['called_at'] = Carbon::parse($date);
}
但问题是,即使用户没有在输入字段中提供日期,called_at 属性也会设置为当前时间戳!但我希望它为 NULL。
为了摆脱它,我注释掉了setCalledAtAttribute mutator。但现在它甚至不会接受输入:
InvalidArgumentException 数据丢失
底线,我如何将我的日期字段设置为空,这样当用户将输入字段留空时,called_at 字段不会设置为当前时间戳?
【问题讨论】:
-
在您的迁移
$table->timestamp('called_at)中添加->nullable()然后重新迁移。或者进入数据库并简单地允许该字段为空。 -
我已经在架构中将其设置为 nullable()。
-
注册了吗?
-
我在问题中提到了这一点:“我有一个名为
called_at的自定义日期字段,我在架构中将其设置为可为空”