我之前曾问过这个问题:laravel: How to get column related to another column in pivot table (3 column pivot)
这帮助我遍历了三个方面的枢纽,并链接了每个用户,帐户和角色。
实施与特定的用户或帐户无关。
在我的应用上,一个帐户可以有多个用户。这些用户在诸如“所有者”,“管理员”,“经理”等帐户上具有特定角色。
我正在创建一项策略,以根据用户在特定帐户中的角色来确定用户是否具有执行操作的权限。
我正在和Tinker玩耍。因此,如果我抓住一个用户并执行$user->roles
,它将输出
>>> $user->roles
=> Illuminate\Database\Eloquent\Collection {#3226
all: [
App\Role {#3250
id: 1,
name: "owner",
manage_billing: 1,
manage_users: 1,
close_account: 1,
created_at: "2020-05-02 12:34:39",
updated_at: "2020-05-02 12:34:39",
pivot: Illuminate\Database\Eloquent\Relations\Pivot {#3219
user_id: 1,
role_id: 1,
account_id: 1,
},
},
],
}
鉴于我有一个account_id
,我想检查该特定帐户上的角色。
我尝试过类似的事情:
$user->roles->wherePivot('account_id', $account->id);
但是集合中不存在方法wherePivot
。
(在此示例中,$account
变量仅为$user->accounts()->first()
)
我的模型和关系是我上面链接的问题。
答案 0 :(得分:0)
这似乎是我想要的:
$user->roles()->wherePivot('account_id', $account->id)->first();
我的错误没有做roles()