模型保存或更新时 Laravel 尾随数据异常

Posted

技术标签:

【中文标题】模型保存或更新时 Laravel 尾随数据异常【英文标题】:Laravel Trailing Data Exception when model save or update 【发布时间】:2018-10-17 00:53:46 【问题描述】:

我在 laravel 5.6 中更新模型数据时遇到问题, 很多次之后,我发现实际上问题出在 created_at 和 updated_at 上。 我的代码:

$editStuState = StuAtt::where('studentId' , '=' , 1007)->first();
dd($editStuState -> created_at);

dd($editStuState)

StuAtt #382 ▼
  #table: "stu_attendance"
  #connection: "mysql"
  #primaryKey: "id"
  #keyType: "int"
  +incrementing: true
  #with: []
  #withCount: []
  #perPage: 15
  +exists: true
  +wasRecentlyCreated: false
  #attributes: array:7 [▼
    "id" => "3"
    "studentId" => "1007"
    "present" => "7"
    "absent" => "2"
    "leave" => "6"
    "created_at" => "2018-04-19 07:01:19.929554"
    "updated_at" => "2018-04-19 02:31:19.000000"
  ]
  #original: array:7 [▼
    "id" => "3"
    "studentId" => "1007"
    "present" => "7"
    "absent" => "2"
    "leave" => "6"
    "created_at" => "2018-04-19 07:01:19.929554"
    "updated_at" => "2018-04-19 02:31:19.000000"
  ]
  #changes: []
  #casts: []
  #dates: []
  #dateFormat: null
  #appends: []
  #dispatchesEvents: []
  #observables: []
  #relations: []
  #touches: []
  +timestamps: true
  #hidden: []
  #visible: []
  #fillable: []
  #guarded: array:1 [▶]

打印created_at 字段时出现的错误:

InvalidArgumentException
Trailing data

错误在哪里以及如何解决?

【问题讨论】:

我使用 public $timestamps = false;在模型中,但这不是真正的解决方案。 您能否提供整个例外情况? @Quezler 什么?我现在不是你的意思? 错误还应该包括行号和堆栈跟踪 Laravel InvalidArgumentException in Carbon.php line 425: Trailing data with SQL database的可能重复 【参考方案1】:

尾随数据是 Carbon 错误,这是因为您可能使用了PostgreSQL,而 DB 的日期返回毫秒。

"created_at" => "2018-04-19 07:01:19.929554"

您可以将以下方法添加到您的(基本)模型中。

    // ...

    public function getDateFormat()
    
         return 'Y-m-d H:i:s.u';
    

【讨论】:

以上是关于模型保存或更新时 Laravel 尾随数据异常的主要内容,如果未能解决你的问题,请参考以下文章

保存或检索时的 Laravel 空间错误

Laravel - 为啥使用尾随空格保存 CHAR 列?

如何在更新 Laravel 中的记录时将表单发布数据加载到模型中

Laravel - 保存与更新

Laravel 更新模型而不是保存新的

是否有可能暂时禁用Laravel中的事件?