Я почему-то не могу обернуть голову вокруг этого, хотя кажется, что ответ прямо передо мной.
У меня есть 3 таблицы, rentals
, amenities
и amenities_rentals
Удобства - это такие вещи, как кондиционер, персонал и т. Д.
amenities_rentals
имеет rentail_id
, amenities_id
. Эта таблица в основном является справочной таблицей, которая соединяет rentals
с amenities
.
В поиске пользователь может сузить аренду, отметив определенные удобства. На данный момент он дает мне все варианты аренды, которые имеют по крайней мере один из отмеченных вариантов. Мне нужно его сузить, чтобы только аренда, которые имеют ВСЕ выбранных удобств. Это то, что у меня есть, это не только неверная информация, но я знаю, что есть лучший способ сделать это.
if($request->has('amenities'))
{
$rental_ids = AmenitiesRentals::select('rental_id')
->whereIn('amenities_id',$request->amenities)
->distinct()
->get();
$builder->whereIn('rentals.id', $rental_ids->toArray());
}
Остальная часть строителя работает нормально.