@VladimirKrasnov

Как сделать поиск Laravel?

Как можно в Laravel сделать поиск с помощью одной формы по нескольким полям и по одному полю?
Сейчас метод поиска выгляди так:
public function search(Request $request)
{
    $result = DB::table('ads')
        ->where('city',  $request->city)
        ->orWhere('category', $request->cat)
        ->get();

    dd($result);    
}


Если ищу по 1-му полю, то все хорошо, а если ищу по 2-м полям то, ищется только по 1-му, а второе игнорируется.
  • Вопрос задан
  • 319 просмотров
Пригласить эксперта
Ответы на вопрос 4
@jazzus
$cityId = $request->input('city_id');
$categoryId = $request->input('category_id');

$adverts = Advert::when($cityId, function ($query, $cityId) {
    $query->where('city_id', $cityId);
})
    ->when($categoryId, function ($query, $categoryId) {
        $query->where('category_id', $categoryId);
    })
    ->get();
Ответ написан
Комментировать
Комментировать
@the5x
Сюда может подойти паттерн Builder. Будете проверять, если есть запрос с именем, то сделать такую-то выборку. Если есть второй запрос, то выполняем действие. Полей может быть сколько угодно
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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