tp5 多对多关联操作

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wyljz/article/details/83275798

模型定义:
模块:

class Module extends Model{
    protected $table = 't_modules';
    protected $pk='id';
}

角色:

class Role extends Model
{
    protected $table='t_roles';
    protected $pk ='id';

    public function modules()
    {
        return $this  -> belongsToMany('Module','t_roles_module','moduleId','roleId') ;
    }
}

用户:

class SysUser extends Model
{
    protected $table = 't_sysuser';
    public function roles()
    {
        return $this->belongsToMany("Role", "t_sysuser_role", "roleId", "userId");
    }
}

获取角色的模块:

 $id=input('id');
            $role = Role::get($id);
            return $role->modules;

设置角色的模块:

  $data=input('');
            $id=$data['roleId'];
            if (empty($data['modules'])) {
                $modules=array();
            } else {
                $modules=$data['modules'];
            }
            $role = Role::get($id);
            $rms = $role->modules;
            foreach ($rms as $m) {
                $role->modules()->detach($m);
            }
            $role->modules()->saveAll($modules);

获取用户的角色:

  $user = SysUser::get(input('id'));
            return $user->roles;

设置用户的角色:

$data=input('');
            $id=$data['userId'];
            if (empty($data['roles'])) {
                $roles=array();
            } else {
                $roles=$data['roles'];
            }
            $user = SysUser::get($id);
            $urs = $user->roles;
            foreach ($urs as $ur) {
                $user->roles()->detach($ur);
            }
            $user->roles()->saveAll($roles);

获取用户的权限树:

 $user=SysUser::get(input('id'));
            $arr=array();
            foreach ($user->roles as $role) {
                $modules=$role->modules;
                foreach ($modules as $module) {
                    $count = Ginq::from($arr)->count(function ($m) use ($module) {
                        return $m['id']==$module['id'];
                    });
                    if ($count==0) {
                        unset($module->pivot);
                        $arr[]=$module->toArray();
                    }
                }
            }
            $ms = list_to_tree($arr, 'id', 'parentId', 'children', null);
            return $ms;

猜你喜欢

转载自blog.csdn.net/wyljz/article/details/83275798