@NikesDark
Анализирую на диване

Как получить строку из MySQL по нужным данным, находящихся в разным таблицах?

Всем доброй ночи, сижу потею уже какой час, голова никак не варит. Попытаюсь объяснить проблему:
есть таблицы:
clothes
clothes_styles
clothes_ranges
styles
ranges
И еще куча подобных таблиц.
В таблице clothes - хранится одежда, в таблице clothes_styles идет привязка одежды к стилям, т.е поля clothes_id и styles_id и в таблице styles - сами стили. Но беда в том, что в таблице clothes_styles может быть несколько строк с одинаковым значение clothes_id, но разными значениями styles_id И в базе еще присутствует куча таких таблиц по аналогии с этими. В чем сама соль, нужно вывести строки из таблицы clothes, у которых, например есть стиль id 1,2 и еще куча таких же параметров по аналогии с этими.
Наведите в какую сторону смотреть. Пишу на Laravel, пробовал через belongsToMany и where , но он ищет не уже в сформированном массиве, а в базе. Можно получить массив всех clothes вместе с styles,ranges и т.п через with, но как в нем искать - без понятия. Надеюсь суть проблемы разъяснил. Заранее благодарен за любую помощь.
  • Вопрос задан
  • 203 просмотра
Решения вопроса 1
Denormalization
@Denormalization
Можно попробовать так:
// Модель Cloth
public function styles()
{
  return $this->belongsToMany(...);
}


И выборка:
$result = Cloth::whereHas('styles', function ($q)
{
  return $q->whereIn('id', [1, 2]);
})->get();


Если правильно понял, то должно сработать.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
ProKiLL
@ProKiLL
Системный администратор
Самое оптимальное решение сделать запрос inner join, подробности смотри тут
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы