Zend 中的每个表都必须映射到自己的类吗?
Posted
技术标签:
【中文标题】Zend 中的每个表都必须映射到自己的类吗?【英文标题】:Does every single table in Zend have to map to its own Class? 【发布时间】:2010-08-27 16:25:43 【问题描述】:我并不是说所有模型都是表格。
我要问的是,在使用 Zend 时,是否每个表也必须有专门为它定义的类?有什么办法可以摆脱这种笨拙的样板编码。我们刚刚开始研究 Zend(希望离开程序化 php 领域!),我的同事认为这最终可能会非常耗时。
这是人们使用 ORM 解决方案的原因吗?有没有其他办法解决这个问题?
感谢您的回复。
【问题讨论】:
【参考方案1】:Zend Table 类遵循Table Data Gateway 模式,根据定义
... 包含用于访问单个表或视图的所有 SQL:选择、插入、更新和删除。其他代码调用它的方法来与数据库进行所有交互。
In the book、Fowler 没那么死板,这么说
对于非常简单的情况,您可以使用一个 TDG 来处理所有表的所有方法。您甚至可以拥有一个用于视图,甚至用于未作为视图保存在数据库中的有趣查询。
但是,除了可以使用 Views 之外,Zend_Db_Table
不支持此操作。您可以创建对多个表的查询,但必须直接通过Zend_Db_Adapter
进行查询,或者 - 当使用连接时 - 通过关闭完整性检查。否则,你必须使用Zend_Db_Table Relationships
提供的API
所以是的,一个实例应该对应一个表或视图。如果您不打算扩展类,则不需要为此创建类。 Zend_Db_Table_Definitions
允许您动态配置 Zend_Db_Table
实例。
请注意,TDG 是一种数据源架构模式,而不是一种对象关系模式。它的目的不是帮助impedance-mismatch,而是将数据库访问代码与业务逻辑分开。
【讨论】:
以上是关于Zend 中的每个表都必须映射到自己的类吗?的主要内容,如果未能解决你的问题,请参考以下文章