我正在使用用户,团队和角色表之间的belongsToMany关系。
我想做的是查询所有经过身份验证的用户所属的团队,并获取该用户在该团队下所具有的所有角色。然后,我想将其输出到JSON。 (我没有使用刀片)。
用户弗兰克:
团队1:
团队2:
第5队:
注意:此查询用于显示响应的关系
return User::first(1)->with('teams','roles')->get();
输出:
{
"id":1,
"username":"Frank",
"name":"Frank",
"email":"frank@example.com",
"teams":[
{
"id":21,
"name":"Team 1",
"pivot":{
"user_id":1,
"team_id":21,
"role_id": 1
}
},
{
"id":1,
"name":"Team 2",
"pivot":{
"user_id":1,
"team_id":1,
"role_id":1
}
},
{
"id":3,
"name":"Team 5",
"pivot":{
"user_id":1,
"team_id":3
"role_id":2
}
}
],
"roles":[
{
"id":1,
"name":"Manager",
"pivot":{
"user_id":1,
"role_id":1,
"team_id":21
}
},
{
"id":2,
"name":"Player",
"pivot":{
"user_id":1,
"role_id":2,
"team_id":21
},
{
"id":1,
"name":"Manager",
"pivot":{
"user_id":1,
"role_id":1,
"team_id":1
}
},
{
"id":2,
"name":"Player",
"pivot":{
"user_id":1,
"role_id":2,
"team_id":3
}
}
]
}
**编辑
场景2
对于每个用户,我想知道他们属于哪个团队以及在该特定团队中扮演的角色:users-> team-> roles
答案 0 :(得分:0)
在用户模型中添加以下方法:
public function getRolesAttribute(){
return $this->with('teams.roles')->teams->pluck('roles.name')->flatten()->unique()->toArray();
}
现在,如果您检索诸如User::first()->roles
之类的用户角色,它必须返回一组角色名称。
祝你好运