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