关于数据生成插入数据库时报时间格式错误的解决方法之一

php.ini配置里默认时区采用的是UTC时间,我们在生成假数据的时候直接获取的时间都是UTC格式(以Z结尾),但咱数据库不支持这个格式的时间,所以在插入前小小地修改下时间格式就可以啦,至于改时区什么的我就没有去试过了,有大神试过的可以分享一下,继续学习。
数据生成工厂不用改,在UserSeeder里对时间数据进行格式化就好了,如下

// 前略
public function run()
{
    // 生成数据
    $users = factory(User::class)->times(50)->make();
    // 对数据字典数组遍历格式化每一项的时间属性
    $data = array_map(function($u){
         $u['email_verified_at'] = date('Y-m-d H:i:s', strtotime($u['email_verified_at']));
         $u['created_at'] = date('Y-m-d H:i:s', strtotime($u['created_at']));
         $u['updated_at'] = date('Y-m-d H:i:s', strtotime($u['updated_at']));
         return $u;
     }, $users->makeVisible(['password','remeber_token'])->toArray() ); // 这个toArray把User对象数组转化成字典数组,可以在tinker里自己试试就知道输出是啥样了
     // 这里再插入数据库
    User::insert($data);
    // 后略
}
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

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