这是我的体系结构:
这个想法是,用户在给定的组中具有角色。当然,用户属于多个组,一个用户可以具有多个角色(在不同的组中)
我正在尝试获取用户所属的所有组。
请原谅我没有使用约定将数据透视表命名为groups_roles_users,出于可读性考虑,我决定采用这种方式。
因此,在用户模型中,我说:
public function groups() {
return $this->belongsToMany('\App\Group', 'roles_in_groups');
}
我认为:
@foreach ($user->groups as $group)
{{ $group->name }}
@endforeach
工作完美。
现在,我要访问roles
表。我想打印以下内容: In {{ $group->name }} you're a {{ $group->role->name }}
,显然,它不能那样工作。
如果我使用pivot
属性,它将只给我user_id
和group_id
,甚至没有role_id
来使用静态方法进行搜索。
所以,我该怎么做?
我正在使用Laravel 5.7
答案 0 :(得分:1)
也许尝试:
public function roles() {
return $this->belongsToMany('\App\Role', 'roles_in_groups');
}
$user = \User::with(['roles','groups'])->first();
$role_name = $user->role->name
$group_name = $user->group->name
https://laravel.com/docs/5.7/eloquent-relationships#eager-loading