模型定义:
模块:
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;