Tan*_*may 5 php laravel eloquent
我很难理解 laravel 中日期字段的内部工作原理。我有一个名为的自定义日期字段called_at,我在架构中将其设置为可为空。由于它是一个日期字段,我自然希望它是一个 Carbon 实例,因此在模型中我将此属性推送到$dates数组。
protected $dates = ['called_at'];
Run Code Online (Sandbox Code Playgroud)
为了能够通过request('called_at')输入从控制器设置它,我必须在模型中设置一个增变器。所以我设置了一个这样的:
public function setCalledAtAttribute($date){
$this->attributes['called_at'] = Carbon::parse($date);
}
Run Code Online (Sandbox Code Playgroud)
但问题是,即使用户在输入字段中没有提供日期,该called_at属性也会设置为当前时间戳!但我希望它是 NULL。
为了摆脱它,我注释掉了setCalledAtAttributemutator。但现在它甚至不会接受输入:
InvalidArgumentException 数据丢失
最重要的是,如何将我的日期字段设置为可空,以便当用户将输入字段留空时,该called_at字段不会被设置为当前时间戳?
尝试这样做:
public function setCalledAtAttribute($date)
{
$this->attributes['called_at'] = empty($date) ? null : Carbon::parse($date);
}
Run Code Online (Sandbox Code Playgroud)