Добавление отношений к модели фабрики Laravel
Я пытаюсь добавить отношение к заводской модели, чтобы выполнить заполнение базы данных следующим образом. Обратите внимание, я пытаюсь добавить 2 сообщения каждому пользователю.
public function run()
{
factory(App\User::class, 50)->create()->each(function($u) {
$u->posts()->save(factory(App\Post::class, 2)->make());
});
}
Но это бросает следующую ошибку
Argument 1 passed to Illuminate\Database\Eloquent\Relations\HasOneOrMany::s
ave() must be an instance of Illuminate\Database\Eloquent\Model, instance
of Illuminate\Database\Eloquent\Collection given
Я думаю, что это как-то связано с сохранением коллекции. Если переписать код, вызвав каждую фабричную модель для публикации отдельно, это, кажется, сработает. Очевидно, что это не очень элегантно, потому что, если я хочу сохранить 10 или публиковать сообщения для каждого пользователя, мне придется декальтировать 10 или строки, если я не использую какой-то цикл for.
public function run()
{
factory(App\User::class, 50)->create()->each(function($u) {
$u->posts()->save(factory(App\Post::class)->make());
$u->posts()->save(factory(App\Post::class)->make());
});
}
* ОБНОВЛЕНО *
Есть ли способ вложить модель фабрики на 3-й уровень?
public function run()
{
factory(App\User::class, 50)
->create()
->each(function($u) {
$u->posts()->saveMany(factory(App\Post::class, 2)
->make()
->each(function($p){
$p->comments()->save(factory(App\Comment::class)->make());
}));
});
}