解决 db:seed 时间戳格式不正确的问题

在执行 php artisan db:seed 的时候报错

[previous exception] [object] (PDOException(code: 22007): SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: '2019-06-13T06:48:39.000000Z' for column 'created_at' at row 1 at /home/vagrant/code/larabbs/vendor/laravel/framework/src/Illuminate/Database/Connection.php:464)
[stacktrace]

其原因在这里

$user_array = $users->makeVisible(['password','remember_token'])->toArray();

$faker 生成的假数据格式是这样的

 "name" => "Fern Keebler"
 "email" => "grant.dion@example.com"
 "email_verified_at" => "2020-04-15 15:58:47"
 "password" => "$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi"
 "introduction" => "Et officia reprehenderit praesentium minus iste vero aut."
 "remember_token" => "yUkUsfULSw"
 "created_at" => "2019-08-20 13:24:58"
 "updated_at" => "2020-04-26 16:44:07"
 "avatar" => "https://cdn.learnku.com/uploads/images/201710/14/1/NDnzMutoxX.png"

但是转完 array 之后就会变成

 "name" => "Fern Keebler"
 "email" => "grant.dion@example.com"
 "email_verified_at" => "2020-04-15T07:58:47.000000Z"
 "password" => "$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi"
 "introduction" => "Et officia reprehenderit praesentium minus iste vero aut."
 "remember_token" => "yUkUsfULSw"
 "created_at" => "2019-08-20T05:24:58.000000Z"
 "updated_at" => "2020-04-26T08:44:07.000000Z"
 "avatar" => "https://cdn.learnku.com/uploads/images/201710/14/1/NDnzMutoxX.png"

时间格式由 "2020-04-26 16:44:07" 变成了 "2020-04-26T08:44:07.000000Z"
只需要在 User.php 做一下定义就可以了

protected $casts = [
        'email_verified_at' => 'datetime:Y-m-d H:i:s',
        'created_at' => 'datetime:Y-m-d H:i:s',
        'updated_at' => 'datetime:Y-m-d H:i:s',
    ];

问题解决

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 2

……没用,必须在model里面重写 serializeDate 方法才行,是我哪里姿势不对?

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

感谢,按照这种方式修改,解决了我的问题

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!