【嵌套查询,子查询】先将表中数据筛选出来后,再进二次查询。权限管理二开
我的应用场景,对数据进行分部门管理。部门管理多个类型的数据。需要先将数据根据部门管理的多类型数据筛选出来后,用户再根据自己下需求再进行二次查询。
//使用whereor 根据部门管理的数据类型进行筛选
$whereor = [];
if (!$this->auth->isSuperAdmin()) {
foreach ($department->navs_ids as $val) {
$whereor[] = ['navs_ids', 'find in set', $val];
}
}
//调用buildSql方法后不会进行实际的查询操作,而只是生成该次查询的SQL语句
$subQuery = $this->model
->whereOr($whereor)
->buildSql();
//使用子查询构造新的查询
$res = $this->model->table($subQuery) //重点是这个table($subQuery)
->withJoin($this->withJoinTable, $this->withJoinType)
->alias($alias)
->where($where)
->order($order)
->paginate($limit);
请先登录
感谢分享~
学习了
- 1
前往