Zend中的每个表都必须映射到自己的类吗?

时间:2010-08-27 16:25:44

标签: php zend-framework orm

我并不是说所有型号都是表格。

我要问的是,在使用Zend时,每个表是否还必须具有专门为其定义的类?有没有办法摆脱这种笨拙的锅炉板编码。我们刚刚开始研究Zend(希望留下程序化的PHP版本!),我的同事认为这可能会非常费时。

这是人们使用ORM解决方案的原因吗?还有其他方法吗?

感谢您的回复。

1 个答案:

答案 0 :(得分:7)

Zend Table类遵循Table Data Gateway模式,根据定义

  

...包含用于访问单个表或视图的所有SQL:选择,插入,更新和删除。其他代码调用其方法与数据库进行所有交互。

In the bookFowler对此不那么刻板,说

  

对于非常简单的情况,您可以使用单个TDG来处理所有表的所有方法。您甚至可以使用一个用于视图,甚至可以使用未在数据库中保存为视图的有趣查询。

但是,除了能够使用视图外,Zend_Db_Table无法满足此要求。您可以创建对多个表的查询,但这些表必须通过Zend_Db_Adapter直接进行,或者 - 使用连接时 - 通过关闭完整性检查。否则,您必须使用Zend_Db_Table Relationships

提供的API

所以是的,一个实例应该对应一个表或视图。如果您不打算扩展类,则不需要为此创建类。 Zend_Db_Table_Definitions允许您动态配置Zend_Db_Table个实例。

请注意,TDG是DataSource架构模式,而不是对象关系模式。它的目的不是帮助impedance-mismatch,而是将数据库访问代码与业务逻辑分开。

相关问题