В моем приложении Laravel я создаю функцию фильтра. Вы можете отфильтровать модель A, выбрав, какие отношения она должна иметь с моделью B. Модель A имеет отношение многие ко многим с моделью B. Так, например, модель A1 имеет отношение с моделью B1, B2, B3, моделью A2 имеет отношение с B2, B3, а модель A3 имеет отношение с моделью B3.
Если вы выберете только B3 в фильтре, должны отобразиться модели A1, A2 и A3. Если вы выбираете B3 и B2, должны отображаться только A1 и A2.
Есть ли способ решить эту проблему и как? Я понятия не имею, понятен ли мой пример, если нет, скажите, пожалуйста.
Я попытался whereHas
, выполнив следующее:
$gyms = Gym::whereHas('facilities', function (Builder $query) use ($facilities) {
$query->whereIn('id', $facilities);
})->get();
Проблема в том, что если я хочу все тренажерные залы со средством 1 и средством 2 показывают тренажерные залы только со средством 1 или средством 2, но мне нужны модели, которые имеют оба.
Тренажерный зал - это модель A из моего примера, а Facility - модель B. $facilities
- это массив идентификаторов объекта.