Недавно я пытался засеять мою базу данных с помощью посева Laravel через фабрики моделей и Faker.Определение внешних ключей Laravel с фабриками моделей, от одного до одного и от одного до многих отношений без создания ненужных моделей
Для простых схем это просто бриз, чтобы он работал :). Тем не менее, я столкнулся с несколькими проблемами при работе со сложными схемами БД, которые включают внешние ключи и таблицы отношений:
- один к одному
- Один ко многим
- Многие ко многим
... Как описано в ссылке: Laravel 5.1 foreign keys in model factory.
В этой теме, official documentation предлагает запустить семена баз данных, как это:
public function run()
{
factory(App\User::class, 50)->create()->each(function ($u) {
$u->posts()->save(factory(App\Post::class)->make());
});
}
... но есть одна проблема с этим решением: при работе с большим количеством таблиц БД и работает много семян (с многие отношения между ними), обычно используется , используя эту методологию для создания ненужных моделей. Например, если бы мы запускали PostsTableSeeder.php перед одним из приведенных выше примеров, все эти сообщения не были бы связаны с пользователями и никогда не использовались в тестах и разработке ...
Так что поиск способ справиться с этой ситуацией, я придумал функциональное решение, которое работает для меня и избегает ненужного создания этих «сиротских» моделей ...
И я хотел поделиться им со всеми, так что это просто объясняется в ответ :).
Я не думаю, что вы могли бы предложить лучший способ достичь того же для многих, чтобы Много отношений?У меня есть пользователи и случаи с таблицей User_Cases, чтобы решить многие для многих. Я пытаюсь написать фабрику, чтобы засеять мой дБ. – Kenilik
Я получаю ** много для многих ** подход в сеялки, а не с заводами ... В вашей сеялке вам нужно просто получить обе модели (* Пользователи * и * Случаи *) и пропустить один из них, назначая другой (ы) в каждом случае. – andcl