Определение дополнительного отношения в сводной таблице в laravel - PullRequest
2 голосов
/ 27 мая 2020

Я работаю над небольшим проектом 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», но я понятия не имею, как связать ее со сводной таблицей. Я читал документацию о «Тернарных отношениях», но не совсем уверен, так ли это здесь? Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...