Laravel 5 Entrust更新用户角色

时间:2015-04-20 07:04:29

标签: php laravel-5

我使用Laravel 5和Entrust创建了一个基于角色的项目,一切正常,直到我尝试更新用户的角色列表,血腥的“完整性约束违规”提醒我,在调用时

$user->attachRoles($roles);

它不会先删除用户的角色,所以我检查usertrait的界面,然后拿出

$user->detachRoles($user->roles);
$user->attachRoles($roles);

代码看起来很丑陋,我认为有三个SQL被执行

  • 找到用户的角色
  • 删除关系
  • 添加新关系

我真的希望它会像

$user->updateRoles($roles);

可以比较现有角色,并进行一些优化。

我错过了什么吗?

1 个答案:

答案 0 :(得分:15)

您可以使用功能$user->roles()->sync($roleKeys)。它需要一系列角色键,并在执行完所有先前的角色后删除。