Laravel where子句,并带有或者列表

Pet*_*e_1 2 php laravel

我想创建一个where子句,它是一个和,带有或者列表.这是我的代码:

$searchLoop = array(
            'u.Name',
            'u.Email',
            'n.Name',
            'u.PhoneMobile'
        );    
$text = 'Manager';
$count = 0;
        foreach ($searchLoop as $loop) {
            $query->where(function ($where) use ($loop, $count, $text) {
                if ($count === 0) {
                    $where->where($loop, 'like', '%' . $text . '%');
                } else {
                    $where->orWhere($loop, 'like', '%' . $text . '%');
                }
            });
            $count++;
        }
Run Code Online (Sandbox Code Playgroud)

基于我对laraval文档和其他搜索的阅读,我希望这样翻译:

and  (
`u`.`Name` like '%Manager%'
or `u`.`Email` like '%Manager%'
or `n`.`Name` like '%Manager%'
or `u`.`PhoneMobile` like '%Manager%'
)
Run Code Online (Sandbox Code Playgroud)

相反,它转换为:

and (`u`.`Name` like '%Manager%')
and (`u`.`Email` like '%Manager%')
and (`n`.`Name` like '%Manager%')
and (`u`.`PhoneMobile` like '%Manager%')
Run Code Online (Sandbox Code Playgroud)

此外,如果我在$ query-> where where函数中使用$ where-> where(我是否只为每个循环执行orWhere等),它似乎并不重要,它仍然只有和.

我在这里先向您的帮助表示感谢.

Pet*_*e_1 5

感谢所有帮助过的人.我终于能够弄明白这一点,坚持查询函数内部的foreach解决了问题

$query - > where(function($where) use($searchLoop, $text) {
  foreach($searchLoop as $count => $loop) {
    if ($count === 0) {
      $where - > where($loop, 'like', '%'.$text.
        '%');
    } else {
      $where - > orWhere($loop, 'like', '%'.$text.
        '%');
    }
  }
});
Run Code Online (Sandbox Code Playgroud)