在雄辩/Laravel上保存时发现意外数据


Unexpected data found during save on eloquent / Laravel

我在数据库中的created_atupdated_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'] = Carbon'Carbon::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'));