Разрабатываете модель Zend для нескольких таблиц вместе? - PullRequest
2 голосов
/ 22 января 2011

Я использую Zend Framework для создания веб-интерфейса для настройки ACL - прав доступа - для пользователей пользовательской CMS.Так как данные ACL разбиты на 5 таблиц (пользователи, группы, разрешения, urls = action + controller, хорошее имя разрешения для понимания пользователем), и у меня есть только один контроллер с четырьмя основными CRUD (создание, список, обновление, удаление) операции Мне было интересно, как лучше это сделать?

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

Я думал, что должен создать модель, которая не расширяет zend_db_table_abstract, а затем написать запросы, которые мне нужны вручную , ограничивая себя только базой данных mysql?

ps, пожалуйста, не спорьте по поводу структуры базы данных acl

спасибо

1 Ответ

3 голосов
/ 22 января 2011

Определение шаблона Шлюза табличных данных является

Объектом, который действует как Шлюз к таблице базы данных.Один экземпляр обрабатывает все строки в таблице.

Вот почему вы не увидите, что в Zend Framework он используется по-другому.Это Архитектурные шаблоны источника данных , а то, о чем вы спрашиваете, является классом, специфичным для домена.

То, с чем вы столкнулись, это Несоответствие импеданса , означающее, что ваши бизнес-объекты не соответствуют структуре вашего дизайна базы данных.Распространенным решением является использование DataMapper или ORM , чтобы справиться с этим для вас.

Другое решение - создать представление в вашей базе данных, которое присоединяетсятаблицы таким образом, что сопоставляет 1: 1 с необходимыми бизнес-объектами.Затем добавьте Zend_Db_Table для этого представления.Вы все равно должны были придумать пользовательскую логику создания, обновления, удаления.Это не отображение данных, но если у вас нет классов Business / Domain для сопоставления, это нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...