解决 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',
    ];

问题解决

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 2

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

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

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

3年前 评论

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