ThinkPHP 模型关联(RBAC)
首先创建五个模型(在每个模型里面声明主键)
创建的五个模型分别为 User、Role、User_role、Node、Role_node
在User模型中创建一个方法 多对多模型关联
 public function userRole()
    {
        // 第一个表示关联的模型、第二个表示中间表、第三个表示外键、第四个表示当前表主键
        return $this->belongsToMany(role::class, 'user_role','rid','uid');
    }在Role模型中创建一个方法 多对多模型
public function roleNode()
    {
        // 第一个表示关联的模型、第二个表示中间表、第三个表示外键、第四个表示当前表主键
        return $this->belongsToMany(node::class, 'role_node','nid','rid');
    }然后在控制器中处理
public function index()
    {
        第一个是模型方法、第二个表示要关联的模型方法
        $data=User::with(['userRole','userRole.roleNode'])->where('uid','=',2)->select()->toArray();
        $list=$data[0]['userRole'][0]['roleNode'];
        // 递归处理
        dd(get_cate_list($list));
            
    }封装递归处理函数法方法
if(!function_exists("get_cate_list")){
    //返回无限级分类菜单
    function get_cate_list($list,$pid=0,$f=0){
        //声明一个静态数组存储处理后的数据
        static $arr = [];
        foreach($list as $val){
            if($val['pid']==$pid){
                $val['level'] = $f;
                $arr[]=$val;
                get_cate_list($list,$val['nid'],$f+1);
            }
        }
        return $arr;
    }
} 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号