升级到 Laravel 5.8 后如何修复 Carbon 时区
How to fix Carbon timezone after upgrading to Laravel 5.8
升级到 Laravel 5.8 后,"created_at" 字段是 return 像这样的字符串
"createdAt": "2019-05-01T16:36:25.000000Z"
但我想 return 一个像以前一样的对象 Laravel 5.7
像这样:
"createdAt": {
"date": "2019-05-01 19:36:25.000000",
"timezone_type": 3,
"timezone": "Asia/Baghdad"
}
我确实在网上四处寻找,没有发现任何关于它的信息,升级指南中也没有关于它的信息。
我正在 return 从资源中获取它,就像 JSON:
public function toArray($request)
{
return [
'id' => $this->id,
'createdAt' => $this->created_at,
];
}
尝试返回日期的碳实例:
Carbon::parse($this->created_at)
我就是这样解决的:
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,
];
}),
];
}
现在它 returns 像这样的对象:
"createdAt": {
"date": "2019-05-01 19:36:25",
"timezone_type": 3,
"timezone": "Asia/Baghdad"
},
"date": null
重大更改记录在 official Carbon documentation。
升级到 Laravel 5.8 后,"created_at" 字段是 return 像这样的字符串
"createdAt": "2019-05-01T16:36:25.000000Z"
但我想 return 一个像以前一样的对象 Laravel 5.7 像这样:
"createdAt": { "date": "2019-05-01 19:36:25.000000", "timezone_type": 3, "timezone": "Asia/Baghdad" }
我确实在网上四处寻找,没有发现任何关于它的信息,升级指南中也没有关于它的信息。 我正在 return 从资源中获取它,就像 JSON:
public function toArray($request)
{
return [
'id' => $this->id,
'createdAt' => $this->created_at,
];
}
尝试返回日期的碳实例:
Carbon::parse($this->created_at)
我就是这样解决的:
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,
];
}),
];
}
现在它 returns 像这样的对象:
"createdAt": {
"date": "2019-05-01 19:36:25",
"timezone_type": 3,
"timezone": "Asia/Baghdad"
},
"date": null
重大更改记录在 official Carbon documentation。