Я получил эту структуру БД:
ddts содержит 3 необязательных внешних ключа (только один из panel_id, sawn_id или veneer_id может содержать внешний идентификатор, а другие 2 равны null
).Таким образом, один ddt может быть только одним из этих 3 типов:
- пилен
- панель
- фанера
Мне нужно извлечьдля каждого company_id (другого внешнего ключа) я суммирую некоторые данные с панелей, пиломатериалов и фанеры, но перед суммированием мне нужно даже конвертировать некоторые из них в килограммы (с помощью функции, реализованной мной).
В модели ddts ive методы: panel (), sawn (), veneer ();
Мне нужна только конечная сумма, но я предполагаю, что для достижения этой цели мне нужно собрать огромную коллекцию, а затемманипулировать им ... Мне бы хотелось понять, что лучше делать по запросу, а что по коду.
Мой первый подход был о:
- выбрать все компании
- в цикле foreach все ddts для каждой компании
- в цикле foreach для каждого ddt связывают тип, выбирая его через условие if
- в цикле Фрейша, выбирая значение для суммирования
- конвертируйте его в килограммы, где это необходимо
- суммируйте его;
но кажется, что это так долго и я совершенно уверен, что пункт 2 и 3 должен быть выполнен JOIN, но не так ясно, как!