分离后,模型枢轴未正确连接

时间:2016-05-31 21:29:20

标签: laravel laravel-5 laravel-5.1

我有一个自定义开发的用户/角色功能,其中包含角色表和user_roles中间表。 user_roles表还有一些额外的数据。

假设用户当前有1个角色分配给他,我必须为该用户分配2个角色。大多数情况下,我只是为用户分离所有枢轴输入,然后再次添加所有3个角色。这简化了事情,我不必检查重复输入的json数据。这样的事情。

$user->roles()->detach();

此工作正常,并删除了所有用户数据透视表项。但是,当我再次向用户附加所有3个角色时,只会添加新角色。这真的很奇怪,并且已经尝试调试它几个小时了。

我遍历所有3个角色,并确保循环实际上正确地接收了这些数据。

$apps = json_encode(array('app1','app2'));
$user->roles()->attach($roleId, ['apps' => $apps]);

我记得我之前在另一个项目上遇到过类似的问题,但是不记得解决方案了。任何帮助都会得到满足。

1 个答案:

答案 0 :(得分:1)

您可以使用sync()方法。您需要要分配的角色的ID。假设您有一些包含角色ID的复选框。

@foreach($roles as $role)
<input type="checkbox" name=role[] value="{{ $role->id }}"
@endforeach

然后在你的控制器中:

 $user-roles()->sync($request['roles']); //$request['roles'] contains the ids of the new roles you want to assign

希望这有用。