faker 数据填充遇到时间格式问题的报错

按照教程一步一步走,在数据填充这一块只要与时间有关,就执行不下去,终端报错,之前的练习解决方式是直接注释掉时间相关的填充。
UserFactory.php 的内容如下:

<?php

use App\Models\User;
use Faker\Generator as Faker;
use Illuminate\Support\Str;

$factory->define(User::class, function (Faker $faker) {
    $date_time = $faker->date . ' ' . $faker->time;
    echo $date_time;
    return [
        'name' => $faker->name,
        'email' => $faker->unique()->safeEmail,
        'remember_token' => Str::random(10),
        'email_verified_at' => now(),
        'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password
        'introduction' => $faker->sentence(),
        'created_at' => $date_time,
        'updated_at' => $date_time
    ];
});

报错信息如下图:
faker 数据填充遇到时间格式问题的报错

主要报错内容为:

Invalid datetime format: 1292 Incorrect datetime value: '1980-01-14T22:23:46.000000Z' for column 'created_at' at row 1

最后再放个数据库表格的时间格式:
faker 数据填充遇到时间格式问题的报错

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

可以在User::insert之前对数据进行一步如下处理:

// UserSeeder.php
<?php
   // 前略...
  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());   // 将假数据对象数组转换成字典数组
    User::insert($data);     // 插入格式化后的数据

    // 后略...
  }

以上

3年前 评论

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