Я столкнулся с проблемой, когда мне нужно соединить три модели в Laravel.
Модель 1: Лицензии
licences_table
id
name
Модель 2: Дисциплины
disciplines_table
id
name
Модель 3: Уровни
levels_table
id
name
weight
Таким образом, лицензия может иметь много дисциплин, а дисциплины могут иметь много уровней.
Но уровни с дисциплинами должны быть уникальными для определенной лицензии.
Я также создал сводную таблицу с тремя внешними ключами:
discipline_levels_table
level_id
discipline_id
licence_id
Я определил отношения между этими тремя моделями, используя ownToMany.
Проблема в том, что когда я пытаюсь получить все лицензии с их дисциплинами и уровнями, подобными этим:Licence::with(array("disciplines","disciplines.levels"))->get();
Я получаю уровни, которые связаны только с дисциплинами, а НЕ с лицензией И дисциплинами.
Я хотел бы получить все уровни, которые связаны с каждой дисциплиной и каждой лицензией.
Как это сделать?
Должен ли я определить разные отношения между моделями?
Или я должен структурировать другой запрос?
Задача ещё не решена.
Других решений пока нет …