对于任何使用 Laravel 7 的 Eloquent 模型来说,我都遇到了一些非常奇怪的事情!
P.S.:我已经运行了我所做的每一个测试:
php artisan optimize:clear
我不知道我在这里错过了什么!
我不会发布任何代码,因为这是带有模型绑定的简单 CRUD。
当保存created_at和updated_at字段时,它正确地保存在MySQL中,我的时区为“America/Sao_Paulo”。
但如果我在任何控制器中执行此操作:
return $model->get()
or
return $model->paginate()
or
Model::all()
我得到回应:
{
"data": [
{
... other fields
"created_at": "2020-08-23T15:22:41.000000Z",
"updated_at": "2020-08-23T15:22:41.000000Z"
}
]
}
它返回错误的时间 +1 小时。
然而,事情变得奇怪了......如果我 print_r() 其中任何一个,我都会得到正确的时间!
Array
(
... other fields
[created_at] => 2020-08-23 12:22:41
[updated_at] => 2020-08-23 12:22:41
)
我尝试使用:
public function getDateFormat()
{
return 'Y-m-d H:i:s';
}
但没有效果!
提前致谢!
拉拉维尔 7 https://github.com/laravel/ideas/issues/1940使用时使用新的日期序列化格式toArray or toJsonEloquent 模型上的方法UTC
Before 拉拉维尔 7,日期将被序列化为如下格式:
2019-12-02 20:01:00
使用序列化的日期ISO-8601格式将显示为:
2019-12-02T20:01:00.283041Z
请注意ISO-8601日期始终表示为UTC.
如果您想继续使用以前的行为,您可以覆盖serializeDate()
模型上的方法:
use DateTimeInterface;
protected function serializeDate(DateTimeInterface $date)
{
return $date->format('Y-m-d H:i:s');
}
参见官方升级文档here https://laravel.com/docs/7.x/upgrade#date-serialization
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)