Поэтому я пытаюсь настроить фабрики для случайного посева тестовой базы данных. Я хочу иметь возможность создать группу пользователей, которые затем создают кучу комнат, а затем оставляют комментарии в комнатах.
Это то, что у меня есть:
factory('App\User', 5)->create()->each(function($u) {
$u->rooms()->save(factory('App\Room', 10)->create()->each(function($p) {
$p->posts()->save(factory('App\Post', 10)->make());
}));
});
Я получаю следующую ошибку:
Argument 1 passed to Illuminate\Database\Eloquent\Relations\HasOneOrMany::save() must be an instance of Illuminate\Database\Eloquent\Model, instance of Illuminate\Database\Eloquent\Collection given
Я предполагаю, что ошибка означает, что она не создает комнаты до того, как она попытается создать записи?
Возможно, немного поздно, но вы должны вызвать saveMany (...) вместо сохранения (...), как описано в документации Eloquent
Действительно, вы хотите создать более одного объекта (factory('App\Room', 10)->create()
или factory('App\Post', 10)->make()
), которые возвращают коллекцию (в короткие слова, массив объектов)
Особая благодарность другу, который напоминает мне RTM ^^