Я пытаюсь добавить отношение к модели factory, чтобы выполнить некоторую серию базы данных следующим образом: примечание Я пытаюсь добавить 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
Я думаю, что это связано с сохранением коллекции. Если перезаписать код, вызвав каждую модель factory для отдельной записи, она, похоже, работает. Очевидно, это не очень элегантно, потому что, если я хочу сохранить 10 или отправить каждому пользователю, тогда мне придется декалировать 10 или строк, если я не использую какой-то цикл цикла.
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());
});
}
* ОБНОВЛЕНО *
Есть ли способ разместить модель factory на 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());
}));
});
}