当处于for-each循环时,如何对特定集合重新应用where()
语句。
我现在正在循环我的参数,我想在where()
语句中为每个参数设置一个循环,这样我就可以用这些where()
语句过滤一个集合
下面是我的foreach:它当前正在获取所有where()
结果并将它们合并在一起,但我希望所有where()
语句都应用于一个集合,以便将它们过滤掉。
$guides = new Collection;
foreach($request->query() as $key => $value){
if($guides->isEmpty()){
$guides = SupportGuideTranslation::where($key, $value)->get();
}
else{
$guides = $guides->toBase()->merge(SupportGuideTranslation::where($key, $value)->get());
}
}
$guides = $guides->unique();
以下是我的参数:
?active=2&language_id=2
这是$请求的结果-
^ array:2 [▼
"active" => "2"
"language_id" => "2"
]
我现在的结果是我得到了6条记录(而不是2条)。
我想要的是,它只显示遵循两个参数规则的2条记录,而不是合并2个独立的集合。
您可以在不执行查询的情况下添加到QueryBuilder
,您所做的是每次迭代执行一个查询。因此,建立正确的查询,然后执行它。
$query = SupportGuideTranslation::query();
foreach ($request->query() as $key => $value) {
$query->where($key, $value);
}
$translations = $query->get();