升级到Laravel 5.8后如何解决Carbon时区

时间:2019-05-02 20:48:58

标签: php laravel php-carbon laravel-5.8

升级到Laravel 5.8后,“ created_at”字段将返回这样的字符串

  

“ createdAt”:“ 2019-05-01T16:36:25.000000Z”

但是我想像Laravel 5.7中一样返回一个对象 像这样:

  

“ createdAt”:{               “ date”:“ 2019-05-01 19:36:25.000000”,               “ timezone_type”:3,               “时区”:“亚洲/巴格达”           }

我确实在网上看到了什么,但升级指南中也没有。 我从资源中返回它就像一个JSON:

public function toArray($request)
{
    return [
        'id' => $this->id,
        'createdAt' => $this->created_at,
    ];
}

2 个答案:

答案 0 :(得分:1)

这就是我可以解决的方法:

public function toArray($request)
{
    return [
        'id' => $this->id,
        'createdAt' => $this->created_at,
        'date' => Carbon::serializeUsing(function ($createdAt) {
          return [
              'date' => $createdAt->toDateTimeString(),
              'timezone_type' => $createdAt->timezone_type,
              'timezone' => $createdAt->tzName,
          ];
        }),
   ];
}

现在,它返回这样的对象:

"createdAt": {
     "date": "2019-05-01 19:36:25",
     "timezone_type": 3,
     "timezone": "Asia/Baghdad"
},
"date": null

重大更改记录在official Carbon documentation中。

答案 1 :(得分:0)

尝试返回日期的碳实例:

Carbon::parse($this->created_at)