Как написать сгруппированное where в laravel?
Есть контроллер в котором выполняется запрос с многочисленными условиями. Выглядит это примерно так:
$houses = House::with('areas')->
where('format_house', '=', $format_house);
$houses = $houses->where('price', '<', $value);
$houses = $houses->where('area', '>', $value);
$houses = $houses->where('address', 'LIKE', "%" . $value . "%")
->orWhere('metro', 'LIKE', "%" . $value . "%")
->orWhere('description_metro', "LIKE", "%" . $value . "%");
$houses = $houses->orderBy('price')->
orderByDesc('created_at')->
orderByDesc('area');
$houses = $houses->paginate(16);
В конец подключаются еще условия. Обращу внимание, что через конструкцию orWhere подключаются альтернативные условия. Проблема в том, что если выполняется альтернативное условие поиска, то отключаются подключенные ранее условия по полям format_house, price, area. Мне нужно же что-то вроде этого, покажу как в SQL это выглядело бы:
Where ((`format_house` = 'Аренда') and (`price` < 1000) and (`area` > 5)
and ((`address` LIKE '%Пушкина%') or (`metro` LIKE '%Пушкина%') or (`description_metro` LIKE '%Пушкина%')));
Можно как-то в ларавел обернуть дополнительными "скобками" условие where, чтобы условие or распространялось только на тройку значений, и не отменяла другие предыдущие where?
Всем спасибо, если ответите!
Источник: Stack Overflow на русском