需要根据三个条件去查询结果集,三个条件的关系是A and (B or C),B条件和C条件有交集,需要取出他两的并集。 如果用户登录(UID存在),条件为A and (B or C),用户未登录,查询条件为:A and B
$uid = $params['uid']??0;
$comment = DB::table('users')->where('A', '=', "2")
$comment = $comment->when($uid>0, function ($query) use ($uid) {
$comment->where('B', '=', "1")->orWhere('uid','=',$uid);
}, function ($query) {
$comment->where('B', '=', "1")
})
->get();
$uid = $params['uid']??0;
$comment = DB::table('users')->where('A', '=', "2")
if ($uid>0) {
$comment = $goodsModel->where('B', '=', "1")->orWhere('uid', '=', "$uid")->get();
}else{
$comment = $goodsModel->where('B', '=', "1")->get();
}
$uid = $params['uid']??0;
$comment = DB::table('users')->where('A', '=', "2")
if ($uid>0) {
$comment = $comment ->where(function ($query) use ($uid) {
$query->where('B', '=', "1")->orWhere('uid', '=', "$uid");
});
}else{
$commentInfo = $query->where(function ($query) use ($uid) {
$query->where('B', '=', "1");
});
}