LARAVEL 5.8 - 在 foreach 中使用数组的 WHERE LIKE 子句的多个条件没有给出完整的结果

Posted

技术标签:

【中文标题】LARAVEL 5.8 - 在 foreach 中使用数组的 WHERE LIKE 子句的多个条件没有给出完整的结果【英文标题】:LARAVEL 5.8 - Multiple conditions for WHERE LIKE clause using array in foreach not giving complete results 【发布时间】:2020-05-18 16:30:22 【问题描述】:

我的数据库表中有一个包含多个逗号分隔值的列,并且我在下面有一个逗号分隔数组:

$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();

它只返回 subModality 列中具有“Pre-Op”的行,记住“Pre-Op”是放在 $possibleSubMods 数组中的第一个值。

请建议我快速而强大的解决方案,我使用的是 Laravel 5.8! 蒂亚!

【问题讨论】:

【参考方案1】:

你可以使用

$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();

【讨论】:

很高兴我能帮上忙 不,它只是返回了不合适的结果。

以上是关于LARAVEL 5.8 - 在 foreach 中使用数组的 WHERE LIKE 子句的多个条件没有给出完整的结果的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.1-5.8 中以前的路线名称

无法在 laravel 5.8 中上传图片

如何在 Laravel 5.8 中附加授权标头

在Laravel 5.8中无法上传图片?

CORS 策略已阻止访问 XMLHttpRequest - Laravel 5.8

laravel 5.8 实现消息推送