Laravel 时间戳(来自 json 响应)与 artisan & mysql select 命令生成的时间戳不同

2023-11-24

TL;DR:没有2020-08-09在 json 响应中。

我刚刚发现我的行为很奇怪Laravel 7.x今天的项目。正如上面标题所提到的,created_at and updated_atjson 响应与 artisan 命令生成的响应不同。

当我更改默认时区时出现问题app/config.php from UTC to Asia/Jakarta。为了清楚起见,这是我的查询的一些结果:

mysql> select * from field_reports

+----+------------+-----------+---------+-------------+------------------------+--------------------------------------------+---------------------+---------------------+
| id | company_id | branch_id | user_id | title       | chronology             | images                                     | created_at          | updated_at          |
+----+------------+-----------+---------+-------------+------------------------+--------------------------------------------+---------------------+---------------------+
|  1 |          1 |         1 |       1 | example     | example chronology     | [{"url": "some_url", "path": "some_path"}] | 2020-08-08 16:02:53 | 2020-08-08 16:29:46 |
|  2 |          1 |         1 |       1 | new fr      | new chronology         | [{"url": "some_url", "path": "some_path"}] | 2020-08-08 18:31:32 | 2020-08-08 18:31:32 |
|  3 |          1 |         1 |       1 | new fr      | new chronology         | [{"url": "some_url", "path": "some_path"}] | 2020-08-08 18:32:48 | 2020-08-08 18:32:48 |
|  4 |          1 |         1 |       1 | example     | example chronology     | [{"url": "some_url", "path": "some_path"}] | 2020-08-09 01:33:31 | 2020-08-09 01:33:31 |
|  5 |          1 |         1 |       1 | NEW         | NEW CHRONOLOGY         | [{"url": "some_url", "path": "some_path"}] | 2020-08-09 01:44:41 | 2020-08-09 01:44:41 |
+----+------------+-----------+---------+-------------+------------------------+--------------------------------------------+---------------------+---------------------+
5 rows in set (0.02 sec)

php artisan tinker

>>> App\User::first()->fieldReports;
=> Illuminate\Database\Eloquent\Collection {#4033
     all: [
       App\FieldReport {#4035
         id: 2,
         company_id: 1,
         branch_id: 1,
         user_id: 1,
         title: "new fr",
         chronology: "new chronology",
         images: "[{"url": "some_url", "path": "some_path"}]",
         created_at: "2020-08-08 18:31:32",
         updated_at: "2020-08-08 18:31:32",
       },
       App\FieldReport {#4038
         id: 3,
         company_id: 1,
         branch_id: 1,
         user_id: 1,
         title: "new fr",
         chronology: "new chronology",
         images: "[{"url": "some_url", "path": "some_path"}]",
         created_at: "2020-08-08 18:32:48",
         updated_at: "2020-08-08 18:32:48",
       },
       App\FieldReport {#4039
         id: 4,
         company_id: 1,
         branch_id: 1,
         user_id: 1,
         title: "example",
         chronology: "example chronology",
         images: "[{"url": "some_url", "path": "some_path"}]",
         created_at: "2020-08-09 01:33:31",
         updated_at: "2020-08-09 01:33:31",
       },
       App\FieldReport {#4040
         id: 5,
         company_id: 1,
         branch_id: 1,
         user_id: 1,
         title: "NEW",
         chronology: "NEW CHRONOLOGY",
         images: "[{"url": "some_url", "path": "some_path"}]",
         created_at: "2020-08-09 01:44:41",
         updated_at: "2020-08-09 01:44:41",
       },
     ],
   }
>>> 

这是来自POSTMAN中的get请求,这是问题所在,请看一下时间戳:

{
    "success": true,
    "data": [
        {
            "id": 2,
            "company_id": 1,
            "branch_id": 1,
            "user_id": 1,
            "title": "new fr",
            "chronology": "new chronology",
            "images": "[{\"url\": \"some_url\", \"path\": \"some_path\"}]",
            "created_at": "2020-08-08T11:31:32.000000Z",
            "updated_at": "2020-08-08T11:31:32.000000Z"
        },
        {
            "id": 3,
            "company_id": 1,
            "branch_id": 1,
            "user_id": 1,
            "title": "new fr",
            "chronology": "new chronology",
            "images": "[{\"url\": \"some_url\", \"path\": \"some_path\"}]",
            "created_at": "2020-08-08T11:32:48.000000Z",
            "updated_at": "2020-08-08T11:32:48.000000Z"
        },
        {
            "id": 4,
            "company_id": 1,
            "branch_id": 1,
            "user_id": 1,
            "title": "example",
            "chronology": "example chronology",
            "images": "[{\"url\": \"some_url\", \"path\": \"some_path\"}]",
            "created_at": "2020-08-08T18:33:31.000000Z",
            "updated_at": "2020-08-08T18:33:31.000000Z"
        },
        {
            "id": 5,
            "company_id": 1,
            "branch_id": 1,
            "user_id": 1,
            "title": "NEW",
            "chronology": "NEW CHRONOLOGY",
            "images": "[{\"url\": \"some_url\", \"path\": \"some_path\"}]",
            "created_at": "2020-08-08T18:44:41.000000Z",
            "updated_at": "2020-08-08T18:44:41.000000Z"
        }
    ]
}

最后,这是控制器中的脚本:FieldReportController.php

/**
 * Display a listing of the resource.
 *
 * @return \Illuminate\Http\Response
 */
public function index(Request $request)
{
    $fieldReports = $request->user()->fieldReports;
    
    return response()->json([
        'success' => true,
        'data' => $fieldReports,
    ]);
}

我尝试过以下几种方法:

  • Run php artisan config:clear
  • Run php artisan cache:clear
  • Run php artisan route:clear
  • Run valet restart

但问题仍然存在。有什么线索吗?


拉拉维尔 7使用时使用新的日期序列化格式toArray or toJsonEloquent 模型上的方法。为了格式化日期以进行序列化,该框架现在使用 Carbon 的toJSON方法,它产生一个ISO-8601兼容日期,包括时区信息和小数秒。此外,此更改还提供了更好的支持以及与客户端日期解析库的集成。

以前,日期会被序列化为如下格式:2020-12-02 20:01:00。使用新格式序列化的日期将如下所示:2020-12-02T20:01:00.283041Z。请注意ISO-8601日期始终表示为UTC.


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

use DateTimeInterface;

/**
 * Prepare a date for array / JSON serialization.
 *
 * @param  \DateTimeInterface  $date
 * @return string
 */
protected function serializeDate(DateTimeInterface $date)
{
    return $date->format('Y-m-d H:i:s');
}

Note:此更改仅影响序列化模型和模型集合arrays and JSON。这一变化有没有效果关于日期如何存储在数据库中。

请参阅升级指南7.x

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Laravel 时间戳(来自 json 响应)与 artisan & mysql select 命令生成的时间戳不同 的相关文章

  • PHP 查找最接近时间线期间的日期

    所以 呃 好吧 这可能会涉及到数学问题 所以希望你带上科学计算器 这是我的问题 给定初始日期 时间戳 时间段 秒 和今天的日期 时间戳 我需要找到与 period n 加上原始 初始日期一致的最近日期 到目前为止 我得到了一些运行良好的东西
  • DOMDocument 对我的字符串做了什么?

    dom new DOMDocument 1 0 UTF 8 str p Hello p var dump mb detect encoding str dom gt loadHTML str var dump dom gt saveHTML
  • 在 php 中检测 iPad?

    如何向 iPad 查看者提供不同的页面 if SERVER HTTP USER AGENT Mozilla 5 0 iPad U CPU iPhone OS 3 2 like Mac OS X en us AppleWebKit 531 2
  • CodeIgniter 中的 base_url() 和 403 错误

    在 HTML 视图中 css 链接代码如下所示 但我的浏览器显示的地址具有双域地址 www jedendzien pl www jedendzien pl assets css style css 所以我收到 403 错误 我通过以下方式创
  • PHP 数组的最大键大小是多少?

    我正在生成关联数组 键值是 1 n 列的字符串连接 会回来咬我的钥匙有最大长度吗 如果是这样 我可能会停下来并采取不同的做法 它似乎仅受脚本内存限制的限制 快速测试后我得到了 128mb 的密钥 没问题 ini set memory lim
  • Composer安装失败php版本冲突

    我要在我的 laravel 项目中安装作曲家 但出现如下错误 您的要求无法解析为一组可安装的软件包 I tried var www html pro composer install 然后我得到了 Problem 1 This packag
  • PHP 中的 XPath 删除 HTML 标签

    我在 PHP 中使用 XPath 来检索 HTML 文档的一部分 假设我的 HTML 文档如下所示 div a href some link address com Hello a p Some text here p div div p
  • 访问自定义规则类中的另一个请求的输入 - Laravel

    我需要访问 request gt important在传递方法中 我需要它根据这个值验证名称 class TestCustom implements Rule public function passes attribute value p
  • Woocommerce 产品查询库存状态

    我使用 3 种可用性状态 有货 缺货 和 允许缺货 我想要将仅处于 库存 状态的产品导出为 XML 问题是 woocommerce 返回两种状态的值 instock 有库存 和 允许缺货 现在查询如下 query array post ty
  • mysql 分区错误主键必须包含表分区函数中的所有列

    在 MySQL 8 上我有这个表 CREATE TABLE float values id bigint UNSIGNED NOT NULL attribute id bigint UNSIGNED NOT NULL value doubl
  • 字符编码失败,为什么\xBD在PHP + HTML中显示不正确

    我只是想更好地理解字符编码 所以我做了一些测试 我有一个保存为 UTF 8 的 PHP 文件 如下所示 页面本身
  • 数据库字段中的空白不会被trim()删除

    我在 MySQL 的文本字段的段落开头有一些空格 Using trim var text field 在 PHP 中或TRIM text field MySQL 中的语句绝对不执行任何操作 这个空白可能是什么以及如何通过代码删除它 如果我进
  • 将 PHP 错误存储在日志文件中

    我想将 php 生成的任何错误和警告存储在日志文件中 但是still也以正常方式显示它们 回显 Thanks 您可以定义自己的函数并描述如何处理错误 http www php net manual en function set error
  • 通过 wp_handle_upload 删除未放入上传文件夹中的图像

    我正在将图像保存到上传文件夹 但我正在使用文件放置内容 http php net manual en function file put contents php代替wp 句柄 上传 https codex wordpress org Fu
  • 使用类型映射选项的 PHP SoapClient 示例

    我在 PHP 的 SoapClient 中的命名空间使用方面遇到了一个小问题 从文档中我相信构造函数的类型映射选项将解决我的问题 http php net manual en soapclient soapclient php http p
  • Magento:查找包含产品的订单

    Magento 有没有办法找到包含给定产品的所有订单 如果可以通过管理面板来完成就更好了 报告 gt 产品 gt 订购的产品向我提供了产品销售的日期以及包含该产品的订单数量 但我需要知道哪些特定订单包含该产品 谢谢你 这个问题我在另一个问题
  • 两个 mysql_fetch_array 语句

    是否有任何原因导致我无法在一个 while 循环中包含两个处理两个不同 mysql 查询结果的 mysql fetch array 语句 原因是我有两个来自 mysql 数据库的查询结果 每个结果包含两列 如下所示 Query 1 Date
  • 设置基于 PHP 定时器的函数

    我有一个 php 文件test php 我想要echo or print5 秒后 即在浏览器调用 加载或打开 php 文件后不久 成功 顺便说一句 有时我可能想在特定的时间间隔后执行 初始化某些函数 如何使用 php 执行面向时间的任务 例
  • 用 PDO 和准备好的语句替换 mysql_* 函数

    我总是做简单的连接mysql connect mysql pconnect db mysql pconnect host user pass if db echo strong Error strong Could not connect
  • 使用 foreach 进行复杂的多维关联数组处理

    我不得不再次问这个问题 抱歉 但我在尝试处理这个数组时遇到了问题 我尝试了几种不同的方法 但没有一个是正确的 这是数组 Array search gt Array response gt Array errors gt number of

随机推荐

  • 如何定期调用asyncTasks

    我有两个 AsyncTasks 执行网络操作 我想定期给他们打电话 比如一分钟后 我怎么做 我不认为我可以在 UI 线程上做到这一点 我需要创建一个新线程吗 是否可以在没有 AlarmManager Service 的情况下实现此功能 基本
  • Android 上启动完成后如何在 BroadcastReceiver 上启动 Activity

    我使用下面的代码让我的应用程序可以在启动完成 10 秒后自动启动 public class BootActivity extends BroadcastReceiver static final String ACTION android
  • 将空值排序在所有其他值之后,特殊情况除外

    我有一个带有可选排序字段的 PostgreSQL 项目表 CREATE TABLE tasks id integer PRIMARY KEY DEFAULT nextval f seq f id integer REFERENCES fix
  • Android 7 意图附加功能缺失

    有谁知道与 Android 6 0 Lollipop 相比 Android 7 0 Nougat 处理 Intent extras 的方式是否有任何变化 长话短说 我的应用程序在 4 1 16 到 6 0 23 的所有版本上都能按预期运行
  • Angular 6:HttpErrorResponse SyntaxError:JSON 中出现意外的 token

    我正在发布一个请求 我应该会收到一个 成功 字符串作为响应 我收到一个 HttpResponseError 其中包含下图中发布的以下信息 采购订单服务 postPurchaseOrderCustom purchaseOrderCustom
  • 在 PHP 中创建基于边缘检测的图像

    我很好奇 是否可以用 PHP 实现 1 发送图像文件到服务器 2 处理图像 检测边缘并根据边缘创建简单的笔画 3 将文件保存在服务器上 将其发送到用户的浏览器 其他 这是一些 示例 文件 P 如您所见 它不是使用任何启用边缘检测的程序制作的
  • GAE python 线程不并行执行

    我正在尝试在 GAE 上使用 Python 创建一个简单的 Web 应用程序 应用程序需要根据收到的请求生成一些线程 为此 我使用 python 的线程库 我生成所有线程 然后等待它们 t1 start t2 start t3 start
  • sqlalchemy 在多个列中是唯一的

    假设我有一个代表位置的类 地点 属于 客户 位置由 unicode 10 字符代码标识 位置代码 在特定客户的位置中应该是唯一的 The two below fields in combination should be unique cu
  • Odoo/OpenERP:从树视图中隐藏创建按钮

    我这里有一个情况 我正在使用 OpenERP 7 我试图从我的产品的树视图中隐藏 创建 按钮 这可以通过使用来完成
  • 隐藏的 div 高度(改变我的建议)

    好吧 我要在这里回答某人关于为什么他们的脚本不起作用的问题 他们将内容加载到隐藏的 div 中 然后获取高度 以便为包裹的 div 制作动画 但我总是尝试测试我提供的代码 所以我做了这个演示向他们证明这一点 那么 嗯 我现在是进入了暮光区还
  • 关于java字符串文字池和字符串连接的混淆

    全部 当我编写下面的代码时遇到问题 String hello Hello String str5 Hel lo String str8 Hel String str9 lo String str10 str8 str9 System out
  • 在C#中执行包含GO语句的SQL批处理

    我正在尝试构建一个程序 它可以批量执行sql语句并进行错误处理 因此我没有使用SMO 问题是GO不是 SQL 的一部分 当使用 NET 执行语句时 它最终会出现错误 SMO 会处理它 但不会给出执行是否失败的任何指示 string stat
  • 如果包含的单元格为空,则使用 jQuery 隐藏表格列

    我有一个以下类型的表 table width 500 border 1 cellspacing 0 cellpadding 0 thead tr th span 1 span th th span 2 span th th span 3 s
  • Select() 查询中使用的 Lambda 表达式

    我正在尝试构建一个 lambda 表达式 其中包含两个赋值 如下所示 然后我可以将其传递给 Queryable Select 方法 我试图将字符串变量传递到方法中 然后使用该变量构建 lambda 表达式 以便我可以在 LINQ Selec
  • 如何更新 XAMPP 的 PHP 版本 [重复]

    这个问题在这里已经有答案了 可能的重复 在 Windows 版 XAMPP 中升级 PHP 我目前使用 XAMPP 版本 1 8 1 其中 PHP 版本 5 4 3 我从一天前发布的 PHP 站点版本 5 4 11 找到了最新版本的 PHP
  • 在 Eclipse (Galileo) 中安装 Maven 插件 (m2eclipse) 时出现问题

    我已经安装了 Eclipse Galileo 适用于 Java EE 开发人员 现在我正在尝试安装 m2eclipse Maven 插件 我按照以下描述的基本步骤进行操作http m2eclipse sonatype org install
  • Django:仅更新UpdateView中已更改的字段

    我正在使用 UpdateView 来更新一系列字段 但是 我只想将已修改的字段保存到数据库中 如果在更新过程中未为字段提供值 我希望将以前的值用作默认值 如果为字段提供了新值 则只应更新该字段 我该如何实现这一目标 views py cla
  • 如何动态加载css文件

    我们正在使用Vue js and Vuetify对于我的申请 作为我的应用程序的一部分 我将根据该 API 响应在页面加载时进行 API 调用 整个应用程序将呈现所有组件 作为此 API 的一部分 我将获得名为CSS方向它告诉哪个 css
  • 在 O(n) 中找到输入字符串的最小周期?

    鉴于以下问题 定义 令 S 为字母表 上的字符串 S 是最小周期S if S 是满足以下条件的最小字符串 S S k S where S 是一个前缀S 如果没有这样的S 存在 那么S是 不是周期性的 例子 S abcabcabcabca T
  • Laravel 时间戳(来自 json 响应)与 artisan & mysql select 命令生成的时间戳不同

    TL DR 没有2020 08 09在 json 响应中 我刚刚发现我的行为很奇怪Laravel 7 x今天的项目 正如上面标题所提到的 created at and updated atjson 响应与 artisan 命令生成的响应不同