Skip to content

Commit 97694b8

Browse files
committed
alter 后台用户表、角色表、权限表多对对关联查询、插入、更新、删除优化
1 parent de4e320 commit 97694b8

File tree

5 files changed

+73
-49
lines changed

5 files changed

+73
-49
lines changed

app/Http/Controllers/Admin/PermissionController.php

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -174,10 +174,14 @@ public function destroy($id)
174174
return redirect()->back()->withErrors("请先将该权限的子权限删除后再做删除操作!");
175175
}
176176

177-
$permission = Permission::find($id);
178-
foreach ($permission->roles as $v){
179-
$permission->roles()->detach($v->id);
180-
}
177+
$permission = Permission::findOrFail($id);
178+
// foreach ($permission->roles as $v){
179+
// $permission->roles()->detach($v->id);
180+
// }
181+
182+
//直接移除权限表跟角色表的所有关联
183+
$permission->roles()->detach();
184+
181185
if ($permission->delete()) {
182186
Event::fire(new PermChangeEvent());
183187
event(new AdminActionEvent('删除了权限:' . $permission->name . '(' . $permission->label . ')'));

app/Http/Controllers/Admin/RoleController.php

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -90,9 +90,11 @@ public function store(RoleCreateRequest $request)
9090
}
9191

9292
if($role->save()){
93-
if (is_array($request->input('permissions'))) {
94-
$role->givePermissionsTo($request->input('permissions'));
95-
}
93+
// sync 方法去创建一个多对多的关联
94+
$role->permissions()->sync($request->input('permissions',[]));
95+
// if (is_array($request->input('permissions'))) {
96+
// $role->givePermissionsTo($request->input('permissions'));
97+
// }
9698

9799
event(new AdminActionEvent("添加角色".$role->name."{".$role->id."}"));
98100
return redirect('/admin/role/index')->withSuccess('添加成功!');
@@ -182,7 +184,10 @@ public function update(Request $request, $id)
182184
}
183185

184186
if($role->save()){
185-
$role->givePermissionsTo($request->input('permissions',[]));
187+
// sync 方法去创建一个多对多的关联
188+
$role->permissions()->sync($request->input('permissions',[]));
189+
190+
// $role->givePermissionsTo($request->input('permissions',[]));
186191
event(new AdminActionEvent("修改角色".$role->name."{".$role->id."}"));
187192
return redirect('/admin/role/index')->withSuccess('修改成功!');
188193
}else{
@@ -213,13 +218,19 @@ public function destroy(Request $request, $id)
213218

214219
$role = Role::findOrFail($id);
215220

216-
foreach ($role->users as $v){
217-
$role->users()->detach($v);
218-
}
221+
// foreach ($role->users as $v){
222+
// $role->users()->detach($v);
223+
// }
224+
225+
//直接移除角色表跟用户表的所有关联
226+
$role->users()->detach();
219227

220-
foreach ($role->permissions as $v){
221-
$role->permissions()->detach($v);
222-
}
228+
//直接移除角色表跟权限表的所有关联
229+
$role->permissions()->detach();
230+
231+
// foreach ($role->permissions as $v){
232+
// $role->permissions()->detach($v);
233+
// }
223234

224235
if ($role->delete()) {
225236
event(new AdminActionEvent("删除角色".$role->name."{".$role->id."}"));

app/Http/Controllers/Admin/UserController.php

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -90,9 +90,12 @@ public function store(Requests\AdminUserCreateRequest $request)
9090
unset($user->roles);
9191

9292
if($user->save()){
93-
if (is_array($request->input('roles'))) {
94-
$user->giveRoleTo($request->input('roles'));
95-
}
93+
//sync 方法去创建一个多对多的关联
94+
$user->roles()->sync($request->input('roles', []));
95+
96+
// if (is_array($request->input('roles'))) {
97+
// $user->giveRoleTo($request->input('roles'));
98+
// }
9699
event(new AdminActionEvent('添加了用户' . $user->name));
97100
return redirect('/admin/user/index')->withSuccess('添加成功!');
98101
}else{
@@ -160,7 +163,10 @@ public function update(Requests\AdminUserUpdateRequest $request, $id)
160163
unset($user->roles);
161164

162165
if($user->save()){
163-
$user->giveRoleTo($request->input('roles', []));
166+
//sync 方法去创建一个多对多的关联
167+
$user->roles()->sync($request->input('roles', []));
168+
169+
// $user->giveRoleTo($request->input('roles', []));
164170
event(new AdminActionEvent('修改了用户' . $user->name));
165171
return redirect('/admin/user/index')->withSuccess('修改成功!');
166172
}else{
@@ -178,9 +184,12 @@ public function destroy($id)
178184
{
179185
$user = User::findOrFail($id);
180186

181-
foreach ($user->roles as $v) {
182-
$user->roles()->detach($v);
183-
}
187+
// foreach ($user->roles as $v) {
188+
// $user->roles()->detach($v);
189+
// }
190+
191+
// 移除用户身上所有身份...
192+
$user->roles()->detach();
184193

185194
if ($user && $user->id != 1 && $user->delete()) {//id=1的超级管理员不能删除
186195
return redirect()->back()->withSuccess("删除成功!");

app/Models/Admin/AdminUser.php

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -50,20 +50,20 @@ public function hasPermission($permission)
5050
return $this->hasRole($permission->roles);
5151
}
5252

53-
// 给用户分配角色
54-
public function assignRole($role)
55-
{
56-
return $this->roles()->save($role);
57-
}
53+
// // 给用户分配角色
54+
// public function assignRole($role)
55+
// {
56+
// return $this->roles()->save($role);
57+
// }
5858

5959

60-
//角色整体添加与修改
61-
public function giveRoleTo(array $RoleId){
62-
$this->roles()->detach();
63-
$roles=Role::whereIn('id',$RoleId)->get();
64-
foreach ($roles as $v){
65-
$this->assignRole($v);
66-
}
67-
return true;
68-
}
60+
// //角色整体添加与修改
61+
// public function giveRoleTo(array $RoleId){
62+
// $this->roles()->detach();
63+
// $roles=Role::whereIn('id',$RoleId)->get();
64+
// foreach ($roles as $v){
65+
// $this->assignRole($v);
66+
// }
67+
// return true;
68+
// }
6969
}

app/Models/Admin/Role.php

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,20 +19,20 @@ public function users()
1919
return $this->belongsToMany(AdminUser::class,'admin_role_user','role_id','user_id');
2020
}
2121

22-
//给角色添加权限
23-
public function givePermissionTo($permission)
24-
{
25-
return $this->permissions()->save($permission);
26-
}
22+
// //给角色添加权限
23+
// public function givePermissionTo($permission)
24+
// {
25+
// return $this->permissions()->save($permission);
26+
// }
2727

28-
//角色权限整体添加与修改
29-
public function givePermissionsTo(array $permissionId){
30-
$this->permissions()->detach();
31-
$permissions=Permission::whereIn('id',$permissionId)->get();
32-
foreach ($permissions as $v){
33-
$this->givePermissionTo($v);
34-
}
35-
return true;
36-
}
28+
// //角色权限整体添加与修改
29+
// public function givePermissionsTo(array $permissionId){
30+
// $this->permissions()->detach();
31+
// $permissions=Permission::whereIn('id',$permissionId)->get();
32+
// foreach ($permissions as $v){
33+
// $this->givePermissionTo($v);
34+
// }
35+
// return true;
36+
// }
3737

3838
}

0 commit comments

Comments
 (0)