我想建立一个像这样的动态where / orWhere法则。
$matchList = [ 'match1', 'match2', 'match3', 'match4' ];
$query->where('Column', 'Like', 'match1')
->orWhere('Column', 'Like', 'match2')
->orWhere('Column', 'Like', 'match3')
->orWhere('Column', 'Like', 'match4');
我尝试构建一个动态方法调用,但它起作用了......
$matchList = [ 'match1', 'match2', 'match3', 'match4' ];
$query->where('Column', 'Like', $hobbiesList[0]);
if(count($matchList) > 1)
{
for($i = 1; $i < count($matchList); $i++)
{
$query->{orWhere('Column', 'Like', $matchList[$i])}();
}
}
问题是我得到了一个匹配列表,对于这个列表,我必须在Larvel 5.1中构建一个动态查询语句。
任何人都可以帮助我或解释我的错误吗?
答案 0 :(得分:3)
你不需要做任何复杂的事情,只需使用它:
for($i = 1; $i < count($matchList); $i++)
{
$query->orWhere('Column', 'Like', $matchList[$i]);
}
您也很可能希望使用"%".$matchList[$i]."%"
而非$matchList[$i]
作为值。
答案 1 :(得分:1)
如果您不需要使用通配符,则应使用wherein
:
$query->whereIn('Column', $matchList);
答案 2 :(得分:0)
=Join(Parameters!pEmails.Value, ",")