我有一个查询,需要检查多个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
链接起来?
答案 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);