Я использую Laravel 5.4 и имею следующую модель и структуру таблицы:
users
-----
id
accounts
--------
id
holdings
--------
id
account_id (foreign key to account)
user_accounts
-------------
id
user_id
account_id
- У пользователя может быть несколько учетных записей
- Учетная запись может использоваться несколькими пользователями.пользователи
- Каждая учетная запись имеет несколько владений
- Таким образом, у пользователя косвенно имеется много владений через их многочисленные учетные записи.
Мне нужна помощь, чтобы определить отношение кпользовательская модель под названием «владения», позволяющая получить все авуары, применимые к пользователю (на основе учетных записей, с которыми они связаны).
Я пробовал много разных вещей и провел годы в Google,Я могу приблизиться как к принадлежащим параметру ownToMany, так и к hasManyThrough, но кажется, что они работают только для трех табличных отношений, где промежуточная таблица хранит первичные ключи из других таблиц.Я могу уменьшить свои отношения до 3 таблиц (а не 4), если я использую внешний ключ account_id в таблице владений, чтобы устранить необходимость присоединения через таблицу счетов, однако я не могу заставить это работать.
принадлежит ToMany - holdings
. id
должно быть holdings
. account_id
:
select * from `holdings`
inner join `user_accounts` on `holdings`.`id` = `user_accounts`.`account_id`
where `user_accounts`.`user_id` = ?
hasManyThrough - user_accounts
. id
должно быть user_accounts
. account_id
:
select * from `holdings`
inner join `user_accounts` on `user_accounts`.`id` = `holdings`.`account_id`
where `user_accounts`.`user_id` = ?"