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