Я использую Laravels Eloquent ORM, и у меня возникла небольшая проблема со специальными отношениями. Давайте предположим, у меня есть следующая таблица:Отношения «один-ко-многим» с ярко выраженным
Recipe:
id | ... | ingredient1 | ingredient2 | ingredient3 | ingredient4
Каждый рецепт имеет ровно 4 ингредиенты и я получаю данные из внешнего источника, в данном конкретном формате, вот почему у меня есть ингредиенты, как колонны и не как обычный МНОГИХ to-many отношение.
Я мог бы установить их как 4 отношения «один ко многим», но я хочу, чтобы иметь возможность писать $ingredient->usedInRecipes()->get()
.
С 4 отношениями один-ко-многим мне нужно было бы написать $ingredient->usedInRecipesAsIngredient1()->get()
, [...], $ingredient->usedInRecipesAsIngredient4()->get()
и объединить их после этого, что приведет к 4 запросам.
Если вы знаете хороший способ присоединиться к ним перед тем, как запросить базу данных или как сделать работу с отношением «4 к большому», ответьте!
Да, я мог бы это сделать, но я искал решение без сводной таблицы, потому что некоторые другие проекты получают доступ к одной и той же базе данных. Если у кого-то нет хорошего решения, я буду использовать сводную таблицу и настроить другие проекты. – darthmaim
@ darthmaim хорошо, справедливо. Я все равно спускаюсь по поворотному маршруту лично, поскольку он чувствует себя намного более нормализованным. Говоря, что я добавил непроверенный подход, вы могли бы использовать, чтобы получить ингредиенты, используя плавные соединения и метод с областью действия на вашей модели. –
Удивительно, я попробую это. – darthmaim