Как заставить работать многоуровневую фабрику для заполнения базы данных

1

Поэтому я пытаюсь настроить фабрики для случайного посева тестовой базы данных. Я хочу иметь возможность создать группу пользователей, которые затем создают кучу комнат, а затем оставляют комментарии в комнатах.

Это то, что у меня есть:

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

Я предполагаю, что ошибка означает, что она не создает комнаты до того, как она попытается создать записи?

Теги:
laravel-5

1 ответ

3

Возможно, немного поздно, но вы должны вызвать saveMany (...) вместо сохранения (...), как описано в документации Eloquent

Действительно, вы хотите создать более одного объекта (factory('App\Room', 10)->create() или factory('App\Post', 10)->make()), которые возвращают коллекцию (в короткие слова, массив объектов)

Особая благодарность другу, который напоминает мне RTM ^^

  • 0
    Вы можете немного опоздать, но вы все равно помогаете другим! «Лучше поздно, чем никогда», а в моем случае ОЧЕНЬ ТАК! Спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню