用户数据填充是否可以使用 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~
推荐文章: