首页 > 解决方案 > 在 Laravel 的查询构建器中使用变量(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 循环一起使用,以便它orWhere即时链接?

标签: laravelfor-looplaravel-5laravel-query-builder

解决方案


您可以使用此代码

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

推荐阅读