[英]How to fix Carbon timezone after upgrading to Laravel 5.8
After upgrading to Laravel 5.8 the "created_at" field is returning a string like this 升级到Laravel 5.8后,“ created_at”字段将返回这样的字符串
"createdAt": "2019-05-01T16:36:25.000000Z" “ createdAt”:“ 2019-05-01T16:36:25.000000Z”
But I want to return an object like before in Laravel 5.7 like this: 但是我想像这样在Laravel 5.7中返回一个对象,像这样:
"createdAt": { "date": "2019-05-01 19:36:25.000000", "timezone_type": 3, "timezone": "Asia/Baghdad" } “ createdAt”:{“ date”:“ 2019-05-01 19:36:25.000000”,“ timezone_type”:3,“ timezone”:“ Asia / Baghdad”}
I did look around the web found nothing about it and there's nothing about it too in upgrade guide too. 我确实在网上看了一眼,但在升级指南中也一无所获。 I'm returning it from resources just like that a JSON: 我从资源返回它,就像一个JSON:
public function toArray($request)
{
return [
'id' => $this->id,
'createdAt' => $this->created_at,
];
}
That's how I could solve it: 这就是我可以解决的方法:
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,
];
}),
];
}
Now it returns an object like this: 现在,它返回一个像这样的对象:
"createdAt": {
"date": "2019-05-01 19:36:25",
"timezone_type": 3,
"timezone": "Asia/Baghdad"
},
"date": null
The breaking change is documented in the official Carbon documentation . 重大更改记录在正式的Carbon文档中 。
尝试返回日期的碳实例:
Carbon::parse($this->created_at)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.