用户数据填充是否可以使用 create 来替代 make?

make方法

// 生成数据集合
$users = factory(User::class)
                ->times(10)
                ->make()
                ->each(function ($user, $index)
                    use ($faker, $avatars)
{
    // 从头像数组中随机取出一个并赋值
    $user->avatar = $faker->randomElement($avatars);
});

// 让隐藏字段可见,并将数据集合转换为数组
$user_array = $users->makeVisible(['password', 'remember_token'])->toArray();

// 插入到数据库中
User::insert($user_array);

create方法

// 生成数据集合
$users = factory(User::class, 100)
    ->create()
    ->each(function ($user) use ($faker, $avatars){
        $user->avatar = $faker->randomElement($avatars);
        $user->save();
    });

运行时间结果

// 插入数量为1000时
[2018-05-23 10:07:44] local.DEBUG:  1527041264.59600800  // make的运行时间0.4585
[2018-05-23 10:07:45] local.DEBUG:  1527041265.05460700

[2018-05-23 10:08:08] local.DEBUG:  1527041288.44442900  // create的运行时间2.1852
[2018-05-23 10:08:10] local.DEBUG:  1527041290.62970400

// 插入数量为100时
[2018-05-23 10:09:42] local.DEBUG:  1527041382.49123300  // make的运行时间0.1277
[2018-05-23 10:09:42] local.DEBUG:  1527041382.61893700  

[2018-05-23 10:09:31] local.DEBUG:  1527041371.28791400  // create的运行时间0.3743
[2018-05-23 10:09:31] local.DEBUG:  1527041371.66225000  

感觉如果数据在100以内,直接用create方法,然后在each里面保存也无可厚非。O(∩_∩)O~

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 3

额,我好像犯了个错误,原来自动生成的Seeder文件默认就是时使用make方法的。好吧,我想多了

5年前 评论

你后面这个日志是哪个文件,在哪呢?这个语句执行时间是开启了什么设置选项吗?

5年前 评论
pardon110

create实际上是数据入库了,make只是放在内存,相当声明了个变量,当然make消耗时间短

4年前 评论

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