【嵌套查询,子查询】先将表中数据筛选出来后,再进二次查询。
权限管理
二开

我的应用场景,对数据进行分部门管理。部门管理多个类型的数据。需要先将数据根据部门管理的多类型数据筛选出来后,用户再根据自己下需求再进行二次查询。

        //使用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个回答默认排序 投票数排序
YANG001
YANG001
这家伙很懒,什么也没写~
2天前

感谢分享~

请先登录
0
1
0
1