LARAVEL 5.8 - Несколько условий для предложения WHERE LIKE, использующего массив в foreach, не дают полных результатов - PullRequest
0 голосов
/ 02 февраля 2020

В моей таблице БД есть столбец с несколькими значениями, разделенными запятыми, и у меня есть массив, разделенный запятыми ниже:

$possibleSubMods = ["Pre-Op","Perioperative","PREOP","Endoscopy Nurse","Endoscopy","Endoscopy Lab"];

И столбец имеет следующие значения:

column name: subModality
Rows:
Post Anesthesia Care Unit Nurse (PACU), Pre-Op
Pre-Op, Endoscopy Nurse
PREOP, Endoscopy Lab

Мой код:

$jobs = DB::table('joblists')
                ->where(function ($query)   use ($possibleSubMods ){
                    foreach ($possibleSubs2 as $subModality) {
                        return $query->where('subModality', 'like', "%" . $subModality . "%");
                    }
                })->count();

Он возвращает только те строки, которые имеют «Pre-Op» в столбце subModality, помните, что «Pre-Op» - это первое значение, помещенное в массив $possibleSubMods.

Пожалуйста, предложите мне быстрое и надежное решение, я использую Laravel 5.8! ТИА!

1 Ответ

0 голосов
/ 02 февраля 2020

Вы можете использовать

$jobs = DB::table('joblists')->where(function ($query) use ($possibleSubMods ){
       foreach ($possibleSubs2 as $key => $subModality) {
            if ($key === 0)
                 $query->where('subModality', 'like', "%" . $subModality . "%");
            else
                 $query->orWhere('subModality', 'like', "%" . $subModality . "%");
       }
})->count();
...