【问题标题】:Laravel 8: Error Call to undefined method DateTime::set() while saving recordLaravel 8:保存记录时对未定义方法 DateTime::set() 的错误调用
【发布时间】:2021-09-23 05:47:41
【问题描述】:

我最近更新了我的 laravel 8,似乎 Carbon 或日期请求无法正常工作我在保存带有日期时间的记录时遇到以下错误

exception: "Error"
file:     "/../vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php"
line: 848
message: "Call to undefined method DateTime::set()"

控制器

$startDate = $request->start_date_time;
$events->start_date_time = Carbon::parse($startDate);

解析字符串: 2021-07-14T07:43:27.498Z

版本

PHP 7.4.21,Laravel 8

【问题讨论】:

  • 什么是$request->start_date_time;价值
  • 解析字符串:2021-07-14T07:43:27.498Z
  • 我需要知道reuqest中start_date_time的格式是什么
  • 我没有设置任何特定格式,我只是解析了 Carbon::parse 函数中的字符串 我通过 API 请求接收的字符串是 2021-07-14T07:43:27.498Z
  • 2021-07-14T07:43:27.498Z 这个值是来自 $startDate 还是 Carbon::parse($startDate) this 的输出?

标签: php laravel laravel-8 php-carbon


【解决方案1】:

问题在于演员表

'start_date_time' => 'dateTime',
'end_date_time' => 'dateTime'

应该是这样的

'start_date_time' => 'datetime',
'end_date_time' => 'datetime'

参考:https://laravel.com/docs/8.x/eloquent-mutators#attribute-casting

【讨论】:

    【解决方案2】:

    通过更改我的事件模型来解决

    之前

    protected $casts = [
        'start_date_time' => 'dateTime',
        'end_date_time' => 'dateTime',
    ]
    

    之后

    protected $casts = [
        'start_date_time' => 'datetime',
        'end_date_time' => 'datetime',
    ]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-23
      • 2022-11-03
      • 2017-01-13
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多