Позвольте мне начать с простого примера, чтобы показать, как структурированы мои данные. Существует четыре таблицы: Employee
, Store
, Department
и Employee_Department_Permissions
.
Отделы принадлежат магазинам (например, таблица Департамента может содержать запись для молочного отдела магазина 5). Сотрудникам предоставляется право работать в отделах через таблицу Employee_Department_Permissions, содержащую идентификатор сотрудника и идентификатор отдела.
Предположим, что сотрудник может войти в мое приложение и просмотреть список каждого хранилища в базе данных. Рядом с каждым магазином я хочу распечатать, сколько отделов они могут работать в каждом магазине. У меня есть модель Employee с mapper, которая предоставляет метод fetchAll
для выполнения первой части.
Но где я должен узнать, сколько отделов может работать сотрудник? В моей findDependentRows
модели я могу вызвать findDependentRows
для этого. Или я мог бы сделать это в своем контроллере с помощью сырых вызовов Zend_Db_Select
. Третий вариант, который я рассматривал, – это просто добавить столбец в таблицу Employee, в которой содержится эта информация, но тогда мне нужно будет обновить вторую таблицу, когда будет изменено Employee_Department_Permission.
Заранее благодарю за любой совет.
Как очень общее правило, я предлагаю вам попытаться сохранить контроллер как можно более свободным от получения информации для просмотров. Это задача, которая наилучшим образом обрабатывается в модели.
Конечно, легко просто получить от контроллера, я имею в виду, так как мы там обрабатываем запрос, было бы просто просто сделать быструю выборку и оттолкнуть ее. Здесь участвует dicipline . По мере того, как ваше приложение растет, вы по достоинству оцените наличие чистого разделения, которое эта методология предлагает вам, если он применяется .
Мои 2 цента, счастливое кодирование для вас, друг.