在Laravel的查询生成器中使用变量(用于循环)

时间:2018-08-23 20:53:01

标签: 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链接起来?

2 个答案:

答案 0 :(得分:3)

您可以使用此代码

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

答案 1 :(得分:0)

您可以像这样循环抛出

Cat::where('name',function($q) use ($cases) {
  foreach($cases as $case) {
    $q->where('name', $case);
  }
})->get();

但是没有什么比在哪里更容易

Cat :: whereIn('name',$ cases);