Skip to content

Commit ccb16ff

Browse files
committed
fix(control): 简化关联代码
1 parent 0591d53 commit ccb16ff

File tree

2 files changed

+14
-9
lines changed

2 files changed

+14
-9
lines changed

laravel/app/Http/Controllers/Api/RoleController.php

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -138,14 +138,19 @@ public function update(Update $request, $id)
138138
// $role->revokePermissionTo($p); // 将会移除与角色关联的所有权限
139139
// }
140140
// Fix: 一并移除了权限的错误
141-
foreach ($role->permissions as $permission) {
142-
$role->permissions()->detach($permission->id); // 仅移除 permission_role 表与角色关联的权限
143-
}
144-
145-
foreach ($permissions as $permission) {
146-
$p = Permission::where('id', '=', $permission)->first(); //从数据库中获取相应权限
147-
$p && $role->givePermissionTo($p); // 分配权限到角色
148-
}
141+
/**
142+
* 多对多关联
143+
* 附加 / 移除 attach 和 detach
144+
* @link https://learnku.com/docs/laravel/5.5/eloquent-relationships/1333#a93d4c
145+
*/
146+
$role->permissions()->detach(); // 仅移除 permission_role 表与角色关联的权限
147+
148+
$role->permissions()->attach($permissions);
149+
150+
// foreach ($permissions as $permission) {
151+
// $p = Permission::where('id', '=', $permission)->first(); //从数据库中获取相应权限
152+
// $p && $role->givePermissionTo($p); // 分配权限到角色
153+
// }
149154

150155
return $this->out(200, ['data' => ['id' => $id]]);
151156
} else {

laravel/app/Http/Controllers/Api/UserController.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ public function update(Update $request, $id)
140140
if (isset($roles)) {
141141
$user->roles()->sync($roles); // 如果有角色选中与用户关联则更新用户角色
142142
} else {
143-
$user->roles()->detach(\Auth::id()); // 如果没有选择任何与用户关联的角色则将之前关联角色解除
143+
$user->roles()->detach(); // 如果没有选择任何与用户关联的角色则将之前关联角色解除
144144
}
145145

146146
return $this->out(200, ['data' => ['id' => $id]]);

0 commit comments

Comments
 (0)