侧边栏壁纸
  • 累计撰写 198 篇文章
  • 累计创建 105 个标签
  • 累计收到 36 条评论

laravel新版本模型 timestamp字段转字符串时是UTC时区的问题

神兵小将
2022-05-18 / 0 评论 / 0 点赞 / 169 阅读 / 512 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-05-18,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

填充数据时报错,提示是时间格式不对,生成的是 UTC 时间

2022-05-18T09:34:32.000000Z

在模型中指定为 datetime 类型也没用

这是用 laravel7 才出现的问题,搜索发现是 laravel7 序列化时间改成了 UTC 格式
解决方法:在模型中重写序列化时间函数

/*  @param DateTimeInterface $date
     *
     * @return string
     */
    protected function serializeDate(DateTimeInterface $date)
    {
        return $date->format('Y-m-d H:i:s');
    }

但是很麻烦,每个model都需要添加以上内容,想到一个办法,就是直接更改model基类,(不推荐)
找到基类

Illuminate\Database\Eloquent\Model.php

在里边添加如下内容:

use DateTimeInterface;


protected function serializeDate(DateTimeInterface $date)
{
        return $date->format('Y-m-d H:i:s');
}

就可以了。

0

评论区