我在created_at
和updated_at
上的数据库上还有一个字段,TIMESTAMP
字段名称是日期。
所以我在模型上雄辩地覆盖了方法getDates()
,因为我希望从Carbon实例化该字段。
public function getDates()
{
return ['date','created_at','updated_at'];
}
但是当我在数据库上创建一条新记录时,它给我一个例外:
InvalidArgumentException找到意外的数据。发现意外数据。 发现了意外的数据。
Ps:从表单发送的值采用欧盟格式:d-m-Y h:i
我不知道如何弄清楚这个问题是否有任何建议值得赞赏
答案 0 :(得分:13)
从getDates返回的数组与dafault合并,导致:
['created_at','updated_at','deleted_at','date','created_at','updated_at'];
所以只使用'日期',应该没问题。
尝试为'date'设置mutator,将数据从输入转换为时间戳格式。 你得到的错误不是Eloquent而是Carbon。
public function setDateAttribute($value)
{
$this->attributes['date'] = Carbon\Carbon::createFromFormat('d-m-Y h:i', $value);
}
此外,文档中也存在错误,因为getDates定义了日期访问者,而不是mutators ..
答案 1 :(得分:1)
试试这个:
Carbon::createFromFormat('d.m.Y H:i', $request->publishdate);
答案 2 :(得分:0)
即使是一年之久的问题,我也会为那些在设置mutator之后仍在努力的人提供我的意见。
如果html输入日期元素以原子格式(1975-12-25T14:15:16-05:00)传递日期,那么日期变更器将无济于事。您需要在第#2848行的Illuminate \ Database \ Eloquent \ Model类中应用以下修复程序才能使其正常工作(在laravel#5中)。
$ value = Carbon :: createFromFormat($ format,(new DateTime($ value)) - > format('Y-m-d H:i:s'));
答案 3 :(得分:0)
你不能使用你的格式" d-m-Y h:i"
您必须使用以下其中之一:UNIX时间戳,日期字符串(Y-m-d),日期时间字符串,DateTime / Carbon实例
https://laravel.com/docs/4.2/eloquent#accessors-and-mutators