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

2024-01-11

对于任何使用 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(使用前将#替换为@)

$model->get() 上 Eloquent 模型时间戳的时区错误,但使用 print_r() 正确 的相关文章

  • 如何根据动态列分钟计算 Laravel Eloquent 中不同的日期时间

    我正在尝试基于两个数据库和列进行查询 model gt where response time lt Carbon now gt subMinutes DB raw anotherTable created at gt diffInMinu
  • 重置密码 电子邮件

    我是 Laravel 开发新手 目前正在从事小型项目 我想自定义重置密码的电子邮件模板 甚至将其链接到完全不同的模板 对于身份验证脚手架 我使用了php artisan make auth命令 但是 默认重置密码功能使用默认的 Larave
  • Laravel 在 Eloquent 范围和查询中使用 select

    我正在尝试清理我编写的一些代码 这是当前的代码 message Message with comments gt join users messages created by users id gt join team user messa
  • Blade @if 中的 Laravel 会话变量

    当我尝试使用 Laravel Session 在刀片中设置 JS 变量来刷新一些数据时 我在 Laravel 4 2 中遇到了一些奇怪的情况 这很简单 我不知道我错过了什么 目标 在用户注册后立即触发 Javascript 网站浏览 方法
  • 如何在Oracle中使用Timestamp_to_scn和Scn_to_timestamp?

    我的查询结果是这样的 select cast to date a start time mm dd yyyy hh mi ss pm as timestamp date of call ora rowscn from calling tab
  • 如何将 Laravel 5.4 与 Angular 4 集成

    我知道如何创造完整的拉拉维尔 5 4自己的项目 我也知道如何使用创建 SPA角4 Problem 我不知道如何将 Laravel 与 Angular 集成 另外 我想使用 Laravel 5 4 作为后端 使用 Angular 4 作为前端
  • Laravel,从 JSON 中删除 null Eloquent 对象属性

    有没有一种优雅的方法从 Eloquent 对象中删除 NULL 值 我的对象嵌套有关系 这个特定的调用可能会长达数千行 所以我尝试这样做的主要原因是为用户节省带宽 但服务器性能也是一个考虑因素 My code data locations
  • 这个条带请求是什么?为什么它会多次触发?

    对于使用 stripe 的 Laravel 应用程序 此请求https r stripe com 0被解雇多次 如下所示 我刷新主页后 这些请求立即被触发 问题是我最近得到了一个429 too many requests我的实时服务器出现错
  • 保存多对多关系,同步/附加不存在?

    我有以下两个多对多关系的模型 use Illuminate Database Eloquent Model class Permission extends Model The database table used by the mode
  • Laravel $request->file() 返回 null

    尝试在后端使用 Laravel 上传文件时遇到问题 Issue Laravel request gt file 方法返回 null Setup 我使用以下方法构建了一个 AJAX 请求超级代理人 https github com visio
  • 您的要求无法解析为 laravel 的一组可安装软件包

    我使用 5 7v Laravel 和 7 2 1v PHP 和 Composer 最新版本 但是当我想创建新项目时出现这些错误 Your requirements could not be resolved to an installabl
  • Laravel 警告:未知:无法打开流:第 0 行的“未知”中没有此类文件或目录

    使用以下命令创建新的 Laravel 项目后 laravel 新 项目名称 一开始它运行了 但第二次运行后我收到错误消息 警告 未知 无法打开流 第 0 行的 未知 中没有此类文件或目录 致命错误 未知 无法打开第 0 行未知中所需的 D
  • 命令“tinker”未定义

    从 5 3 升级到 5 4 后 请按照说明操作 为了继续使用 Tinker Artisan 命令 您还应该安装 laravel tinker 软件包 composer require laravel tinker 安装软件包后 您应该添加
  • 致命错误:PHP 从版本 7.0 升级到 7.2 后找不到类“SoapClient”

    我升级了PHP 7 0 to 7 2在Ubuntu中 执行升级后 我安装了 Laravel 5 6 升级之前 类 SoapClient 是true 但是升级之后 我遇到了 致命错误 未找到 SoapClient 类 我检查了php ini
  • Laravel http 请求:无法运行多个请求

    我在 Laravel http 请求方面遇到了严重的问题 请帮我解决这个问题 我假设我有 2 个请求路由到相同的控制器 Req 1 http localhost 8000 manualScheduler runScript task nam
  • 需要按天分割日期时间范围

    我有一个需要根据日期时间拆分的表 输入表 ID Start End A 2019 03 04 23 18 04 2019 03 04 23 21 25 A 2019 03 04 23 45 05 2019 03 05 00 15 14 所需
  • 如何在自定义组件中使用 Vue.js 插件?

    我需要输出一个表格及其内容 可以通过 Ajax 进行更新 所以我打算使用vue tables 2 https github com matfish2 vue tables 2 https github com matfish2 vue ta
  • 在 apache docker 容器中运行虚拟主机

    我在同一个 apache 容器中有两个 php 应用程序 我试图在端口上运行其中一个应用程序 因为它需要通过根域而不是子文件夹进行访问 我想在端口 8060 上运行应用程序 我尝试使用 apache 虚拟主机执行此操作 但它不会加载页面 h
  • Laravel 中只向登录用户显示按钮

    如果我以 John 身份登录 如何才能只显示 John 的红色按钮而不显示 Susan 的红色按钮 测试系统环境 Win10 Laravel5 4 Mysql5 7 19 table class table table responsive
  • 一次播种多行 laravel 5

    我目前正在尝试为我的用户表播种 如果我像这样尝试 2 行 就会失败 如果我只使用单个数组而不是 users 数组内的 2 个数组来创建一些假数据 那么效果很好 我做错了什么 正确的方法是什么 class UserTableSeeder ex

随机推荐