解决 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',
];
问题解决
推荐文章: