Искать в Laravel по значению Array - PullRequest
0 голосов
/ 16 ноября 2018

Я строю поиск с несколькими фильтрами приложений в Laravel.Это работает нормально, пока у меня много флажков для определенного запроса, как возраст.Если я просто проверяю одно значение, функция поиска работает нормально.Но если я проверю на 2 или более значений, он не будет искать.Может ли кто-нибудь помочь мне с этим.

Вот мой контроллер

if ($request->has('age')) {
    $age = $request->input('age');
    $ageString = implode(" , ", $age);
    $nursery->where('acceptingAge',  'LIKE', '%' . $ageString . '%');
} 

Вот моя форма

<input type="checkbox" class="custom-control-input" id="1year" name="age[]" value="5 years old">
<input type="checkbox" class="custom-control-input" id="1year" name="age[]" value="4 years old">

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Похоже, ваши данные AccetingAge были похожи на "5 лет, 3 года, 1 год"

Как насчет

$nursery= new Nursery;
if($request->has('age')){
    foreach($request->input('age') as $age){
        $nursery= $nursery->where('acceptingAge',  'LIKE', '%' . $age . '%');
    }
}
$nursery->get();
0 голосов
/ 16 ноября 2018
$nersery->whereIn('acceptingAge', $age);

для получения дополнительной информации о whereIn:

https://laravel.com/docs/5.5/queries#where-clauses

Обновление

Попробуйте это

$nersery->where(function($query) use ($age) {

    foreach ($age as $key => $a) {

        if ($key === 0) {

            $query = $query->where('acceptingAge', $a);

            continue;

        }

        $query = $query->orWhere('acceptingAge', $a);

    }

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...