@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-му, а второе игнорируется.
  • Вопрос задан
  • 74 просмотра
Пригласить эксперта
Ответы на вопрос 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. Будете проверять, если есть запрос с именем, то сделать такую-то выборку. Если есть второй запрос, то выполняем действие. Полей может быть сколько угодно
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
07 мар. 2021, в 18:25
35000 руб./за проект
07 мар. 2021, в 18:22
5000 руб./за проект
07 мар. 2021, в 17:45
9000 руб./за проект