gpt4 book ai didi

laravel - $model->get() 上 Eloquent Model 时间戳的时区错误,但使用 print_r() 正确

转载 作者:行者123 更新时间:2023-12-04 15:58:28 26 4
gpt4 key购买 nike

对于使用 Laravel 7 的任何 Eloquent 模型,我都遇到了一些非常奇怪的事情!
P.S.:我已经运行了我所做的每一个测试:

php artisan optimize:clear
我不知道我在这里错过了什么!
我不会发布任何代码,因为这是一个带有模型绑定(bind)的简单 CRUD。
保存 created_at 和 updated_at 字段时,它会正确保存在 MySQL 中,我的时区为“America/Sao_Paulo”。
但是如果我在任何 Controller 中这样做:
return $model->get()
或者
return $model->paginate()
或者
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';
}
但是没有效果!
提前致谢!

最佳答案

Laravel 7 uses a new date serialization format when using the toArray or toJson method on Eloquent models with UTC


之前 Laravel 7 , 日期将被序列化为如下格式:
2019-12-02 20:01:00
使用 序列化的日期ISO-8601 格式将显示为:
2019-12-02T20:01:00.283041Z

Please note that ISO-8601 dates are always expressed in UTC.


如果您想继续使用以前的行为,您可以覆盖 serializeDate()您的模型上的方法:
use DateTimeInterface;

protected function serializeDate(DateTimeInterface $date)
{
return $date->format('Y-m-d H:i:s');
}
查看官方升级文档 here

关于laravel - $model->get() 上 Eloquent Model 时间戳的时区错误,但使用 print_r() 正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63549021/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com