thinkphp6中where与whereOr同时使用
whereOr与where同时使用时,需使用闭包模式,避免sql语句错误。
$user = Db::name('user')->where('uuid', $where['uuid'])->find();
if($user['phone'] && $user['card_id']){
$map1 = [['phone', '=', $user['phone']]];
$map2 = [['card_id', '=', $user['card_id']]];
$model = $model->where(function ($query) use ($map1, $map2) {
$query->whereOr([$map1, $map2]);
});
}elseif($user['card_id']){
$model = $model->where('card_id', $user['card_id']);
}elseif($user['phone']){
$model = $model->where('phone', $user['phone']);
}else{
$model = $model->where('id', 0);
}