我在数据库中的created_at
和updated_at
上还有一个字段作为TIMESTAMP
,字段名为date。
因此,我在我的模型上雄辩地重写了方法getDates()
,因为我希望该字段从Carbon实例化。
public function getDates()
{
return ['date','created_at','updated_at'];
}
但当我在数据库上创建一个新记录时,它给了我一个例外:
InvalidArgumentException发现意外数据。发现意外数据。发现意外数据。
Ps:表单发送的值采用欧盟格式:d-m-Y h:i
我不知道如何解决这个问题,任何建议都值得
从getDates返回的数组与dafault数组合并,结果为:
['created_at','updated_at','deleted_at','date','created_at','updated_at'];
所以在那里只使用"日期",应该没问题。
尝试为"date"设置一个赋值函数,将输入的数据转换为时间戳格式。你得到的错误不是Eloquent,而是Carbon。
public function setDateAttribute($value)
{
$this->attributes['date'] = CarbonCarbon::createFromFormat('d-m-Y h:i', $value);
}
文档中也有错误,因为getDates定义的是日期访问器,而不是赋值器。。
试试这个:
Carbon::createFromFormat('d.m.Y H:i', $request->publishdate);
您不能使用您的格式"d-m-Y h:i"
您必须使用其中之一:UNIX时间戳、日期字符串(Y-m-d)、日期时间字符串、DateTime/Carbon实例
https://laravel.com/docs/4.2/eloquent#accessors-和突变体
尽管这是一个已有一年历史的问题,我将为任何在设置了变异后仍在挣扎的人提供我的输入。
如果html输入日期元素以原子格式(1975-12-25T14:15:16-05:00)传递日期,那么日期变异器将不会起作用。您需要在Illuminate\Database\Eloquent\Model类的第2848行应用以下修复程序才能使其正常工作(在laravel#5中)。
$value = Carbon::createFromFormat($format, (new DateTime($value))->format('Y-m-d H:i:s'));