【问题标题】:Unexpected data found during save on eloquent / Laravel在 eloquent / Laravel 上保存期间发现意外数据
【发布时间】:2014-05-27 09:10:21
【问题描述】:

我在created_at 和updated_at 上还有一个字段,因为TIMESTAMP 字段名称是日期。

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

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

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

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

Ps:表单发送的值是欧盟格式:d-m-Y h:i

我不知道怎么解决这个问题,欢迎提出任何建议

【问题讨论】:

  • 你现在在我的回答中有解决方案。

标签: php laravel-4 eloquent php-carbon


【解决方案1】:

您从 getDates 返回的数组已与默认数组合并,导致:

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

所以这里只使用“日期”应该没问题。


尝试为“日期”设置一个修改器,以将数据从输入转换为时间戳格式。 你得到的错误不是 Eloquent 而是 Carbon。

public function setDateAttribute($value)
{
    $this->attributes['date'] = Carbon\Carbon::createFromFormat('d-m-Y h:i', $value);
}

文档中也有错误,因为 getDates 定义了日期访问器,而不是修改器..

【讨论】:

  • 试过但似乎不是这个问题谢谢。无论如何都不会合并但会被覆盖。
  • 是的,我的错。我现在才意识到问题所在。检查编辑。
  • 是的,这是我尝试过的正确答案,看看它是否有效。 :) 谢谢老兄。
  • 如果您正在修改任何日期的格式,则使用 DB::raw('(backup_records.created_at IS NOT NULL 时的情况,然后 date_format(backup_records.created_at, "%d-%m- %Y %h:%i:%s %p") else "Not Available" end) as created_at_text') 而不是 'created_at'。
【解决方案2】:

试试这个:

Carbon::createFromFormat('d.m.Y H:i', $request->publishdate);    

【讨论】:

    【解决方案3】:

    你不能使用你的格式“d-m-Y h:i”

    您必须使用以下之一:UNIX 时间戳、日期字符串 (Y-m-d)、日期时间字符串、DateTime / Carbon 实例

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

    【讨论】:

      【解决方案4】:

      尽管它已经有一年的历史了,但我正在为任何即使在设置了 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'));
      

      【讨论】:

        猜你喜欢
        • 2020-08-29
        • 1970-01-01
        • 2021-11-20
        • 2014-10-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多