Я пытаюсь выяснить, почему мой запрос игнорирует все, кроме заголовка и описания.Кнопка поиска, ведущая к контроллеру, предназначена для фильтрации различных типов объявлений, по категориям, по регионам, по цене.Например, если теперь я ищу существующее объявление, и оно будет найдено по названию / ключевому слову -> всегда будет отображаться, даже если я выберу другой регион / категорию / диапазон цен
Я пытаюсь использовать что-то, что спасет менямного операторов if, чтобы проверить, существуют ли они в запросе.Может быть, другой вариант si использовать https://github.com/mohammad-fouladgar/eloquent-builder для построения моего запроса
public function index(Request $request)
{
$keyword = $request['keyword'];
$category_id = $request['category_id'];
$type_id = $request['type_id'];
$region_id = $request['region_id'];
$min_price = $request['min_price'];
$max_price = $request['max_price'];
$result = Ad::when($keyword, function ($q) use ($keyword) {
return $q->where('title', 'like', '%' . $keyword . '%')->orWhere('description', 'like', '%' . $keyword . '%');
})
->when($category_id, function ($q) use ($category_id) {
return $q->where('category_id', $category_id);
})
->when($region_id, function ($q) use ($region_id) {
return $q->where('region_id', '=', $region_id);
})
->when($type_id, function ($q) use ($type_id) {
return $q->where('adtype_id', '=', $type_id);
})
->when($min_price, function ($q) use ($min_price) {
return $q->where('price', '>=', $min_price);
})
->when($max_price, function ($q) use ($max_price) {
return $q->where('price', '<=', $max_price);
})
->paginate(8);
Мой URL-адрес get get выглядит так: search? Keyword = & category_id = 0®ion_id = 0 & type_id = 0 & min_price = & max_price =
Произведенный запрос в mysql, когда я ищу существующее объявление по его имени и ищу другую категорию:
select * from `ads` where `title` like '%test test%' or `description` like '%test test%' and `category_id` = '2' limit 8 offset 0
Объявление найдено, но фактическая категория - 1, а не2, то же самое для всех других оптимальных параметров.