【发布时间】:2018-09-14 05:24:24
【问题描述】:
我有表users、posts 和comments,一个用户有很多帖子,每个帖子有很多 cmets(post_id 在 cmets 表中),还有一个用户有很多 cmets,但并不完全需要匿名用户(评论表中的user_id),下面的代码为每个帖子添加了一些 cmets,但 user_id 永远不会由评论的所有者填写。我希望评论通过在$factory->define 之外的数组中注入相关的user_id。实际上我可以将随机 user_id 放在工厂中,但总随机用户必须与 Seeder 类中的值相同。
**CommentFactory.php**
$factory->define(App\Contact::class, function (Faker $faker) {
return [
// 'user_id' => $faker->randomElement([null, rand(0, 9)]),
'name' => $faker->name,
'email' => $faker->unique()->safeEmail,
'contact' => $faker->phoneNumber,
'website' => $faker->domainName,
'subject' => $faker->sentence(),
'message' => $faker->paragraph(5),
];
});
**UserSeeder.php**
factory(App\User::class, 10)->create()->each(function ($user) {
$user->posts()->saveMany(factory(App\Post::class, rand(2, 10))->make());
$user->posts->each(function ($post) use ($user) {
// how to inject user_id value from here (comment factory)
$post->comments()->saveMany(factory(App\Comment::class, rand(2, 10))->make());
});
});
【问题讨论】:
标签: laravel eloquent laravel-seeding