tp5 多对多关联操作

模型定义:
模块:

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;
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值