如何在Laravel中以三向方式访问其他字段?

时间:2019-02-05 20:57:11

标签: laravel

这是我的体系结构:

enter image description here

这个想法是,用户在给定的组中具有角色。当然,用户属于多个组,一个用户可以具有多个角色(在不同的组中)

我正在尝试获取用户所属的所有组。

请原谅我没有使用约定将数据透视表命名为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_idgroup_id,甚至没有role_id来使用静态方法进行搜索。

所以,我该怎么做?

我正在使用Laravel 5.7

1 个答案:

答案 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