Laravel Relationship - Дополнительные поля в сводной таблице, связанные с дополнительными моделями - PullRequest
0 голосов
/ 04 июля 2019

Я упростил задачу, чтобы добраться до сути. У меня есть три таблицы, users, roles, account.

Обычно я бы настраивал модель User так, чтобы отношения с ролями были многими, но я хочу, чтобы эти роли были специфическими для каждой учетной записи. Поэтому я добавил дополнительное поле в сводную таблицу. Вот таблицы и поля, которые у меня есть;

таблица пользователей

|—————————

| id | name |

|—————————

| 1 | Bob    |

| 2 | Jim     |

| 3 | Fred   |

|—————————

таблица ролей

|—————————

| id | title |

|—————————

| 1 | Administrator    |

| 2 | Manager           |

| 3 | Approver           |

|—————————

таблица счетов

|—————————

| id | name |

|—————————

| 1 | ABC Company    |

| 2 | XYZ Shipping     |

| 3 | KLM Transport   |

|—————————

У меня есть сводная таблица role_user с дополнительным полем для учетной записи;

|—————————

| role_id | user_id | account_id

|—————————

| 1         | 3           |  1

| 2         | 2           |  1

| 3         | 2           |  3

| 3         | 1           |  2

|—————————

Я использовал функцию withPivot в функции ownToMany при настройке отношений «многие ко многим». Это позволяет мне получать информацию, используя $user->roles->pivot->account_id, но мне нужно получить название этой компании. Все, что он передает шаблону блейда, - это идентификатор из сводной таблицы, а не привязка его к реальной модели учетной записи.

Есть ли способ с Eloquent получить всю эту модель таким же образом, как и исходные отношения?

...