php - laravel eloquent orm插入查询自动生成创建于并更新于与数据库不一致

标签 php mysql laravel

我正在使用 Lumen 5.2 访问 MySql。 听完查询并记录 SQL 后,我看到了

[object] (Illuminate\\Database\\Events\\QueryExecuted: {\"sql\":\"insert into
`RedEnvelopes` (`User_id`, `amount`, `remain`, `expiredAt`, `to_User_id`,        
`message`, `type`, `dividend`, `updatedAt`, `createdAt`) values (?, ?, ?, ?, 
?, ?, ?, ?, ?, ?)\",\"bindings\":
[5000219,\"1\",\"1\",1478073412,\"8000228\",\"你的名字\",1,1,\"2016-11-02 
15:51:52\",\"2016-11-02 15:51:52\"],\"time\":0.77,\"connection\":
{},\"connectionName\":\"mysql\"})

并使用Model::find()获取记录,返回结果与上面的sql一致。但是当我直接访问MySql服务器并通过SQL获取记录时,createdAt和updatedAt比绑定(bind)值晚了8个小时。

我完全糊涂了。还有其他人遇到过这个问题吗?我需要一些帮助。

最佳答案

我认为这个问题可以通过3个步骤来解决。

首先,将时区设置为您本地的时区。我的是亚洲/上海。请参阅.env

APP_TIMEZONE=Asia/Shanghai 

其次,在config/app.php中设置应用时区

'timezone' => env('APP_TIMEZONE'),

最后,将created_at/updated_at列更改为日期时间类型。

关于php - laravel eloquent orm插入查询自动生成创建于并更新于与数据库不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40375134/

相关文章:

php - 如何获取 php 键作为 php 数组中的值

php - 获取 $_SESSION 中的时间戳 mysql 值

php - MySQL 多表全文搜索

javascript - Vue.js 上失去自动融合功能

laravel - docker容器内的nohup服务

PHPUnit:获取 equalTo 断言以忽略属性

php - PHP解析/语法错误;以及如何解决它们

mysql - 工作流程 - 如果所有记录均获得批准,则创建新行

php - SQL数据存储

database - Laravel DB::insert() 和 DB::table()->insert() 之间的区别