php - 升级到 Laravel 5.8 后如何修复 Carbon 时区
问题描述
升级到 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, "timezone": "Asia/Baghdad" }
我确实在网上浏览了一下,没有发现任何关于它的信息,升级指南中也没有关于它的信息。我从资源中返回它,就像 JSON 一样:
public function toArray($request)
{
return [
'id' => $this->id,
'createdAt' => $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,
];
}),
];
}
现在它返回一个像这样的对象:
"createdAt": {
"date": "2019-05-01 19:36:25",
"timezone_type": 3,
"timezone": "Asia/Baghdad"
},
"date": null
重大更改记录在官方 Carbon 文档中。
推荐阅读
- javascript - 如何使用 axios get 方法获取 onDownloadProgress 百分比?
- java - 带有前缀的 UUID 的 Java 正则表达式
- ruby-on-rails - Rails 迁移添加了一个 null: false 列,其初始值不是持续的默认值
- ios - 是否有某种包装器可以让蓝牙与网络应用程序通信?当然使用本机构建来保存包装器
- java - 使用 Spring Boot 在运行时以编程方式更改 application.properties 文件
- regex - 比较两个文件而不对 AWK 进行排序
- ios - 如何使用 Xcode 在 Launchscreen.storyboard 中为 UILabel 指定“等宽系统字体”?
- django - 无法在 Django 中将当前用户设置为帖子的作者
- android - 为什么 iOS Safari 浏览器中的 padding 和 margin 看起来不同?
- python - 将csv文件中的两列数据一起添加到python中同一csv文件中的新列中