我在数据库上还有一个字段。 created_atupdated_at 作为 TIMESTAMP 字段名称为日期。

所以我复盖了方法 getDates() 在我的模型上雄辩,因为我希望该字段从碳实例化。

public function getDates()
{
   return ['date','created_at','updated_at'];
}

但是当我在数据库上创建一个新记录时,它会给我一个异常:

InvalidArgumentException发现意外数据。发现意外数据。发现意外数据。

Ps:从表单发送的值为EU格式: d-m-Y h:i

不知道如何弄清楚这个问题任何建议表示赞赏

有帮助吗?

解决方案

从getDates返回的数组与dafault数组合并,导致:

['created_at','updated_at','deleted_at','date','created_at','updated_at'];

所以在那里只使用'日期',应该没问题。


尝试为'date'设置一个mutator,将数据从输入转换为时间戳格式。你得到的错误不是雄辩,而是碳。

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),日期时间字符串,日期时间/碳实例

https://laravel.com/docs/4.2/eloquent#accessors-and-mutators

尽管这是一个一年的问题,我把我的输入给任何人仍然挣扎,即使设置了突变器。

如果html input date元素以atom格式传递日期(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'));
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top