Я изучаю шаблоны программирования/проектирования для слоя модели своего приложения, и мне интересно, какой из них лучше всего подходит для ситуации, когда вы делаете поиск, который включает в себя объединения между несколькими таблицами.
Например, предположим, что у вас есть следующие таблицы/отношения: Клиент → 1..n Учетные записи → 0..n Особенности
где Особенностью может быть чековая книжка или какой-то премиальный продукт, такой как бесплатное страхование путешествий.
Затем я хочу сделать getCustomersForFeature(), чтобы получить всех клиентов с учетными записями, которые имеют бесплатное страхование путешествий.
Использование ActiveRecord или объекта доступа к данным, похоже, не подходит, поскольку они обычно сосредоточены на одном классе за таблицу; аналогично для Data Mapper. Я понимаю, что могу разбить его на операции для каждой таблицы, например. getAccountsForFeature() и getCustomersForAccount(), но я хочу сделать поиск одним ударом.
Если мы должны "сгибать" шаблоны одного класса за стол и использовать шаблон объекта доступа к данным, скажем, должен ли метод getCustomersForFeature() использовать CustomerDAO или FeatureDAO? Но мне это не кажется правильным, потому что вы будете загрязнять ваши DAO знаниями других таблиц.
Предложения пожалуйста.