Если в модели или контроллере выбираются зависимые строки?

Позвольте мне начать с простого примера, чтобы показать, как структурированы мои данные. Существует четыре таблицы: Employee , Store , Department и Employee_Department_Permissions .

Отделы принадлежат магазинам (например, таблица Департамента может содержать запись для молочного отдела магазина 5). Сотрудникам предоставляется право работать в отделах через таблицу Employee_Department_Permissions, содержащую идентификатор сотрудника и идентификатор отдела.

Предположим, что сотрудник может войти в мое приложение и просмотреть список каждого хранилища в базе данных. Рядом с каждым магазином я хочу распечатать, сколько отделов они могут работать в каждом магазине. У меня есть модель Employee с mapper, которая предоставляет метод fetchAll для выполнения первой части.

Но где я должен узнать, сколько отделов может работать сотрудник? В моей findDependentRows модели я могу вызвать findDependentRows для этого. Или я мог бы сделать это в своем контроллере с помощью сырых вызовов Zend_Db_Select . Третий вариант, который я рассматривал, – это просто добавить столбец в таблицу Employee, в которой содержится эта информация, но тогда мне нужно будет обновить вторую таблицу, когда будет изменено Employee_Department_Permission.

Заранее благодарю за любой совет.

Как очень общее правило, я предлагаю вам попытаться сохранить контроллер как можно более свободным от получения информации для просмотров. Это задача, которая наилучшим образом обрабатывается в модели.

Конечно, легко просто получить от контроллера, я имею в виду, так как мы там обрабатываем запрос, было бы просто просто сделать быструю выборку и оттолкнуть ее. Здесь участвует dicipline . По мере того, как ваше приложение растет, вы по достоинству оцените наличие чистого разделения, которое эта методология предлагает вам, если он применяется .

Мои 2 цента, счастливое кодирование для вас, друг.