Laravel 调用未定义的方法Illumb\Database\Query\Builder::attachPermissions()

Laravel 调用未定义的方法Illumb\Database\Query\Builder::attachPermissions(),laravel,entrust,Laravel,Entrust,我知道这已经是一个过度讨论的问题,但我相信我没有犯通常犯的错误。我在使用Laravel的委托包创建角色和权限时遇到此错误。我正在尝试将权限附加到角色说明,而不是直接附加到模型,因此出现此错误。下面是一些代码: 现在,根据我的发现,当人们试图直接在用户或其他模型上设置权限时,通常会出现这个错误。但我不会那么做。我正在尝试为角色分配权限,但仍然收到此错误。有人能帮忙吗?您没有正确获取权限模型。您需要像这样调用第一个方法: $detachFromTrainer = Permission::where

我知道这已经是一个过度讨论的问题,但我相信我没有犯通常犯的错误。我在使用Laravel的委托包创建角色和权限时遇到此错误。我正在尝试将权限附加到角色说明,而不是直接附加到模型,因此出现此错误。下面是一些代码:


现在,根据我的发现,当人们试图直接在用户或其他模型上设置权限时,通常会出现这个错误。但我不会那么做。我正在尝试为角色分配权限,但仍然收到此错误。有人能帮忙吗?

您没有正确获取权限模型。您需要像这样调用第一个方法:

$detachFromTrainer = Permission::where('name', 'detach-from-trainer')->first();
此外,您可以使用WHERE子句优化SQL查询,而不是像这样调用多个查询:

$permissions = Permission::whereIn('name', ['name1', 'name2' ...])->get();

错误说明了什么?这篇文章的标题说的是什么:调用未定义的方法Illumb\Database\Query\Builder::attachPermissions:-很好!非常感谢。早些时候,您已经编写了get,尽管如此,我仍然得到了错误。你能给我指出文档中解释get和first之间区别的链接吗?get返回一个雄辩的模型集合,而first返回查询的第一个模型或行,因此get[0]也可以工作吗?但不考虑效率。
$permissions = Permission::whereIn('name', ['name1', 'name2' ...])->get();