Я работаю над небольшим проектом laravel, в котором у меня есть группы и пользователи во взаимосвязи «многие ко многим». В этих моделях используется следующая сводная таблица «group_members»:
+---------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| group_id | int(10) unsigned | NO | MUL | NULL | |
| user_id | int(10) unsigned | NO | MUL | NULL | |
| group_role_id | int(10) unsigned | NO | MUL | NULL | |
+---------------+------------------+------+-----+---------+----------------+
В эту таблицу я добавил дополнительный идентификатор с именем «group_role_id», который связан с типом членства (постоянный участник, модератор,. ..) в таблице "group_roles":
+-------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(255) | NO | UNI | NULL | |
| description | text | YES | | NULL | |
+-------------+------------------+------+-----+---------+----------------+
В модели Group я определил связь с дополнительным group_role_id:
public function members()
{
return $this->belongsToMany('App\User', 'group_members', 'group_id', 'user_id')->withPivot('group_role_id')->withTimestamps();
}
Итак, запустив следующий код:
@foreach($group->members as $user)
<p>{{ $user->getFullName()}} - {{ $user->pivot->group_role_id}}</p>
@endforeach
приводит к получению всех пользователей для этой группы с соответствующим group_role_id:
John Doe - 1
Jane Doe - 3
Мой вопрос: как я могу использовать эти group_role_id, чтобы получить соответствующее имя из таблицы group_roles_table? Я добавил новую модель с именем «GroupRole», но я понятия не имею, как связать ее со сводной таблицей. Я читал документацию о «Тернарных отношениях», но не совсем уверен, так ли это здесь? Заранее спасибо