laravel - Laravel 播种多对多表
问题描述
所以我有两个具有多对多关系的表,所以我使用一个“链接”表来存储他们的 id 来连接它们。
运动工厂:
$factory->define(Exercise::class, function (Faker $faker) {
return [
'name' => $faker->name(),
'description' => $faker->sentence(),
'duration' => $faker->numberBetween(1,20),
'duration_unit' => 'Reps'
];
});
部门工厂:
$factory->define(Section::class, function (Faker $faker) {
return [
'routine_id' => function(){
return Routine::all()->random();
},
'name' => $faker->word,
'description' => $faker->sentence(),
];
});
部分播种机:
public function run()
{
factory(App\Section::class,40)->create();
}
练习播种机:
public function run()
{
factory(App\Exercise::class,120)->create();
}
如何将随机练习与随机部分联系起来?我需要一个单独的工厂/播种机还是我可以以某种方式循环在练习播种机中?由于练习是最后生成的?
解决方案
感谢这个答案
你可以这样做:
在播种部分和练习之后:
$sections = App\Section::all();
App\Exercise::all()->each(function ($exercise) use ($sections) {
$exercise->sections()->attach(
$sections->random(rand(1, 3))->pluck('id')->toArray()
);
});