在Laravel';中使用变量(for循环);s查询生成器

在Laravel';中使用变量(for循环);s查询生成器,laravel,for-loop,laravel-5,laravel-query-builder,Laravel,For Loop,Laravel 5,Laravel Query Builder,我有一个需要检查多个orWhere语句的查询 $cases = ['john', 'kate', 'mike', 'rob', 'josh', 'moe'] 在这种情况下,我想使用where作为for循环 Cat::where(function($q) use ($cases) { $q->where('name', 'john')->orWhere('name', 'kate'); // etc })->get(); 有没有更干净的方法将其与for循环一起使用,以便

我有一个需要检查多个orWhere语句的查询

$cases = ['john', 'kate', 'mike', 'rob', 'josh', 'moe']
在这种情况下,我想使用where作为for循环

Cat::where(function($q) use ($cases) {
   $q->where('name', 'john')->orWhere('name', 'kate'); // etc
})->get();
有没有更干净的方法将其与for循环一起使用,以便动态链接
或where

您可以使用此代码

Cat::whereIn('name', $cases);
Cat::where(function($q) use ($cases) {
   $firstCase = array_shift($cases);
   $q->where('name', $firstCase);
   foreach($cases as $case) {
      $q->orWhere('name', $case);
   }
   // other conditions this
})->get();
如果您不愿意,也可以使用此代码

Cat::whereIn('name', $cases);
Cat::where(function($q) use ($cases) {
   $firstCase = array_shift($cases);
   $q->where('name', $firstCase);
   foreach($cases as $case) {
      $q->orWhere('name', $case);
   }
   // other conditions this
})->get();

您可以像这样循环投掷:

Cat::where('name',function($q)use($cases){
foreach($cases作为$case){
$q->where('name',$case);
}
})->get();
但是
其中
更简单:

Cat::其中('name',$cases);

是的-刚刚意识到这一点。有那么一秒钟,我想那只适用于
id
s。谢谢你的指点!