首页 > 解决方案 > 如何在 Laravel 的三向枢轴上访问其他字段?

问题描述

这是我的架构的样子:

在此处输入图像描述

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

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

请原谅我没有使用约定将数据透视表命名为 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_idand group_id,甚至不会给我role_id使用静态方法搜索的。

那么,我怎样才能做到这一点?

我正在使用 Laravel 5.7

标签: laravel

解决方案


Maybe try:

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


推荐阅读