Запросы не идут в части модели. Они связаны с постоянством (модель не поддерживает постоянство).
Эти сложные запросы должны находиться на уровне постоянства, который в данном случае относится к классам шлюза табличных данных.
Я бы назвал классы шлюза табличных данных «DAO» (объект доступа к данным). Шлюз табличных данных - это своего рода DAO, поскольку у вас может быть DAO, который поможет вам получать информацию из файлов, веб-сервисов ...
Таким образом, вы можете сохранить ваши фактические классы и добавить DAO для управления этими сложными запросами. Этот DAO не предоставляет вам доступ к определенной таблице БД, но он по-прежнему предоставляет вам доступ к источнику данных (составленному из нескольких таблиц БД).
Редактировать:
Я предлагаю вам создать DAO interface
(он может быть пустым). Вы DB таблицы будут реализовывать этот интерфейс. Ваш новый класс также реализует этот интерфейс, но не расширяет Zend_Db_Table
.
Короче говоря, вы переопределяете / переименовываете свой уровень персистентности с «Zend Db Table» на «DAO» (что делает его более общим). Zend Db Table - это вид DAO.