实现查询:获取模糊匹配中文名 || 英文名等于 “Sara” 并且 个人信息状态为“待审核” 的员工信息。
其中 $filter = ["eName" => "Sara", "status" => "待审核"];
->where(function($q) use($filter){
if(isset($filter['name'])){ $q->where("eName","like","%".$filter['name']."%")
->orWhere("cName","like","%".filter['name']."%")
}
if(isset($filter['status'])){
$q->where("status",$filter['status']);
}
})
上面的调用顺序会导致 $q->where("stauts",$filter['status']);无效。
正确的书写顺序为将orWhere的调用放在最后,如下:
->where(function($q) use($filter){
if(isset($filter['status'])){
$q->where("status",$filter['status']);
} if(isset($filter['name'])){
$q->where("eName","like","%".$filter['name']."%")
->orWhere("cName","like","%".filter['name']."%")
}
});
错误具体产生原因我也没深究,毕竟菜鸡,希望有了解的小伙伴可以在下方留言补充。