我使用Laravel 5和Entrust创建了一个基于角色的项目,一切正常,直到我尝试更新用户的角色列表,血腥的“完整性约束违规”提醒我,在调用时
$user->attachRoles($roles);
它不会先删除用户的角色,所以我检查usertrait的界面,然后拿出
$user->detachRoles($user->roles);
$user->attachRoles($roles);
代码看起来很丑陋,我认为有三个SQL被执行
我真的希望它会像
$user->updateRoles($roles);
可以比较现有角色,并进行一些优化。
我错过了什么吗?
答案 0 :(得分:15)
您可以使用功能$user->roles()->sync($roleKeys)
。它需要一系列角色键,并在执行完所有先前的角色后删除。