一起为多个表设计Zend模型?

时间:2011-01-22 14:45:28

标签: php zend-framework model

我正在使用Zend Framework构建一个Web界面,用于为自定义CMS的用户设置ACL - 权限。由于ACL数据分布在5个表中(用户,组,权限,url =动作+控制器,用户可以理解的良好权限名称),并且我只有一个控制器具有四个基本CRUD(创建,列表,更新,删除) )操作我想知道最好的方法是什么?

我的书中的所有示例我都看到每个模型都扩展了Zend_Db_Table_Abstract,因此代表了一个表

我在想我必须做一个不扩展zend_db_table_abstract的模型,然后手工编写我需要的查询,从而仅将自己限制在mysql数据库中?

P.S。请不要争论acl数据库结构

谢谢

1 个答案:

答案 0 :(得分:3)

definition of the Table Data Gateway pattern

  

充当数据库表的网关的对象。一个实例处理表中的所有行。

这就是为什么你不会在Zend Framework中看到它的使用方式有所不同。它是Data Source Architectural Patterns,而您要问的是域特定类。

您遇到的是Impedance Mismatch,这意味着您的Business Objects与数据库设计的结构不匹配。常见的解决方案是使用DataMapperORM为您处理。

另一种解决方案是在数据库中创建一个View,它以将1:1映射到所需业务对象的方式连接表。然后为该视图添加Zend_Db_Table。你仍然需要提出自定义创建,更新,删除逻辑。这不是数据映射,但是如果你没有任何Business / Domain类可以映射,那就没关系。