laravel10数据库多条件联合查询
$query = $this->user;
//定义可能要勾选的字段
if (isset($data['unit_type']) && !empty($data['unit_type'])) {
$query = $query->where('unit_type', $data['unit_type']);
}
if (isset($data['state']) && !empty($data['state'])) {
$query = $query->where('state', $data['state']);
}
if (isset($data['login_at']) && !empty($data['login_at'])) {
$query = $query->where('login_at', $data['login_at']);
}
if (isset($data['inputContent1']) && !empty($data['inputContent1'])) {
$query = $query->where('accountname', 'like', "%{$data['inputContent1']}%")
->orWhere('unit', 'like', "%{$data['inputContent1']}%");
}
if (isset($data['inputContent2']) && !empty($data['inputContent2'])) {
$query = $query->where('username', 'like', "%{$data['inputContent2']}%")
->orWhere('phone', 'like', "%{$data['inputContent2']}%");
}
//$query = $query1->union($query2);
$query = $query->get();
if(!$query->isEmpty())
{
return $query;
}
throw new Exception("未找到该用户",400);
想要实现多条件联合查询,不知道是不是laravel10的原因,链式查询语句不能分开写,这段代码只能查询其中的某个字段或者某个模糊查询,否则返回结果为空。还望各位大佬指点
编辑:
感谢老哥指点,但是问题还是依旧,我查询单个字段时能够用 get 获得正确的查询结果,但是查询两个以上字段时用 get 只能查询到空。用 union () 方法可以实现查询两个以上字段时用 get 返回正确结果,但是不确定是否会对某个字段进行查询,逻辑上不太好写
破案了,自己逻辑错了都用Orwhere结果就对了,感谢各位老哥指点
最好附上请求参数和最终生成的 SQL 语句,这样好排查问题!
感觉应该是你最后两个条件有问题,试试吧最后两个条件写在 where callback 里: