我有7条记录。其中6个有selling
,1个是rent
。在数组我得到这个:
array:2 [▼
0 => "Selling"
1 => "Rent"
]
但是当我预测到结果我得到4而不是7.任何建议如何解决这个问题。我试图创建动态查询,所以如果我再输入一件我不需要在这里更改的东西。
if(is_array($option)){
foreach($option as $o){
$q->orWhere('name', 'like', $o);
}
}
else{
$q->orWhere('name', 'like', $option);
}
答案 0 :(得分:1)
无需循环,请使用whereIn()
if(!is_array($option)){
$option = [$option];
}
$query->whereIn('name', $option)->get();
答案 1 :(得分:0)
您可以使用PHP的array_unique来确保没有重复的选项。
if(is_array($option)) {
$option = array_unique($option); // remove any duplicate options
foreach($option as $o){
$q->orWhere('name', 'like', $o);
}
}
else{
$q->orWhere('name', 'like', $option);
}
答案 2 :(得分:0)
如果您想在查询中使用 LIKE ,最好这样写
if(is_array($option)){
foreach($option as $o){
$q->orWhere('name', 'like', '%'.$o.'%');
}
}
else{
$q->orWhere('name', 'like', '%'.$option.'%');
}
否则会搜索确切的名称