模型定义:
模块:

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;