1. 直接whereOr
$list = Db::name('tb')->where(['status'=>1,'admin_id'=>5])->whereOr(['type'=>1,'step'=>2])->select();
// 生成的sql为:select * from `tb` where `status`=1 and `admin_id`=5 or (`type`=1 or `step`=2);
2. 采用闭包的方式
$map = ['status'=>1,'admin_id'=>5];
$orMap = ['type'=>1,'step'=>2];
$list = Db::name('tb')->where(function ($query) use ($map) {
$query->where($map);
})->whereOr(function ($query) use ($orMap) {
$query->where($orMap);
})->order('id desc')->select();
// 生成的sql为:select * from `tb` where (`status`=1 and `admin_id`=5) or (`type`=1 and `step`=2);
一般来说,在复杂的查询里,我们更多的是使用第二种方式。