【问题标题】:Faker for Laravel SeederLaravel Seeder 的 Faker
【发布时间】:2016-05-06 00:17:33
【问题描述】:

我有一个表 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 并运行我想要的数量。我觉得我处理它的方式不够好,所以我想知道有什么更好的方法可以做到。特别是,我希望视频不仅仅是用户,而不是相同的数量,在我所做的那个中,它们的数量都是相同的。

【问题讨论】:

    标签: php laravel faker laravel-seeding


    【解决方案1】:

    查看文档Adding Relations to Models部分

    向模型添加关系

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

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

    【讨论】:

      猜你喜欢
      • 2023-03-06
      • 2021-04-21
      • 2017-11-17
      • 2016-09-09
      • 2015-06-09
      • 1970-01-01
      • 2023-02-14
      • 2017-02-06
      • 1970-01-01
      相关资源
      最近更新 更多