I am making seeders for a M:M relation where I would like to attach 1 Widget to WorkspaceItem in 90% of cases, other 5% 2, last 5% 3.
$widgets = Widget::all();
$workspaceItems = WorkspaceItem::all();
foreach ($workspaceItems as $workspaceItem) {
$numberBetween = $faker->numberBetween(0, 100);
if ($numberBetween > 95) {
$widgetsToSeed = $widgets->random(3);
} else if ($numberBetween > 90 && $numberBetween <= 95) {
$widgetsToSeed = $widgets->random(2);
} else {
$widgetsToSeed = $widgets->random();
}
foreach ($widgetsToSeed as $widget) {
$workspaceItem->widgets()->attach($widget->id, [...]);
}
}
Note: I can't use sync() because I have additional properties for pivot table.
If I dd($widgetsToSeed), I indeed get random widgets. But as soon as it enters the loop and I dd($widget) I don't get the model, but just true. What seems to be the problem?