Laravel Seeder的Faker

时间:2016-01-28 14:47:50

标签: php laravel faker laravel-seeding

我与一个名为users的表的一对多关系中有一个表videos。我想在不丢失数据完整性的情况下播种两个表。这就是我在下面所做的:

$factory->define(App\User::class, function (Faker\Generator $faker) {
return [
    'name' => $faker->name,
    'email' => $faker->email,
    'username' => $faker->unique()->userName
];
});

$factory->define(App\Video::class, function(Faker\Generator $faker){
    $user = factory(App\User::class)->create();
    return [
        'title' => $faker->city,
        'link' => $faker->domainName,
        'user_id' => $user->id,
        'description' => $faker->sentence(40)
    ];
});

所以现在我所要做的就是创建一个VideoTableSeeder并运行我想要的金额。我觉得我处理它的方式不够好所以我想知道我能做什么更好的方法。特别是,我希望视频不仅仅是用户而不是相同的数量,在我完成的视频中,它们的数量都相同。

1 个答案:

答案 0 :(得分:0)

在文档中查看Adding Relations to Models

部分
  

为模型添加关系

     

您甚至可以将多个模型保存到数据库中。在这个例子中,   我们甚至会将关系附加到创建的模型上。使用时   create方法创建多个模型,一个Eloquent集合   返回实例,允许您使用任何方便的   集合提供的函数,例如:

     

$users = factory(App\User::class, 3) ->create() ->each(function($u) { $u->posts()->save(factory(App\Post::class)->make()); });