php - Laravel 5 Entrust 更新用户角色

标签 php laravel-5

我使用 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/

相关文章:

javascript - 将 CKEditor 与 CKfinder 结合使用并将内容保存到数据库

php - 下载 Laravel 时 Composer 非常慢

mysql - Mysql 中的数据库排序规则和字符集设置(在 Laravel 中)

mysql - Laravel 列未找到 : 1054 Unknown column '0' in 'field list'

php - Laravel 中的碳意外日期时间格式

javascript - 如何使 js 警报仅在 php echo 消息上弹出,而不在其他所有内容上弹出?

php - 如何从 php 函数进行自动 javascript 函数调用?

php - 使用 with 但给它另一个名字的预加载模型 - Laravel 5.2

php - Laravel 使用集合对重复的表条目进行分组

php - Laravel Authorize() 混淆