Laravel 5.1动态在哪里/或哪里

时间:2015-11-19 10:19:00

标签: php laravel

我想建立一个像这样的动态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中构建一个动态查询语句。

任何人都可以帮助我或解释我的错误吗?

3 个答案:

答案 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, ",")