我使用 Laravel 5 和 Entrust 创建了一个基于角色的项目,一切正常,直到我尝试更新用户的角色列表,该血腥的“完整性约束违规”提醒我在调用时
$user->attachRoles($roles);
它不会先删除用户的角色,所以我检查了usertrait的接口(interface),然后得出
$user->detachRoles($user->roles);
$user->attachRoles($roles);
代码看起来很丑,我认为执行了三个SQL
- 查找用户的角色
- 删除关系
- 添加新关系
我真的希望它会像
$user->updateRoles($roles);
可以比较现有的角色,并做一些优化。
我错过了什么吗?
最佳答案
您可以使用函数$user->roles()->sync($roleKeys)
。它需要角色键数组,执行后所有以前的角色都将被删除。
关于php - Laravel 5 Entrust 更新用户角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29741251/