我并不是说所有型号都是表格。
我要问的是,在使用Zend时,每个表是否还必须具有专门为其定义的类?有没有办法摆脱这种笨拙的锅炉板编码。我们刚刚开始研究Zend(希望留下程序化的PHP版本!),我的同事认为这可能会非常费时。
这是人们使用ORM解决方案的原因吗?还有其他方法吗?
感谢您的回复。
答案 0 :(得分:7)
Zend Table类遵循Table Data Gateway模式,根据定义
...包含用于访问单个表或视图的所有SQL:选择,插入,更新和删除。其他代码调用其方法与数据库进行所有交互。
In the book,Fowler对此不那么刻板,说
对于非常简单的情况,您可以使用单个TDG来处理所有表的所有方法。您甚至可以使用一个用于视图,甚至可以使用未在数据库中保存为视图的有趣查询。
但是,除了能够使用视图外,Zend_Db_Table
无法满足此要求。您可以创建对多个表的查询,但这些表必须通过Zend_Db_Adapter
直接进行,或者 - 使用连接时 - 通过关闭完整性检查。否则,您必须使用Zend_Db_Table Relationships
所以是的,一个实例应该对应一个表或视图。如果您不打算扩展类,则不需要为此创建类。 Zend_Db_Table_Definitions
允许您动态配置Zend_Db_Table
个实例。
请注意,TDG是DataSource架构模式,而不是对象关系模式。它的目的不是帮助impedance-mismatch,而是将数据库访问代码与业务逻辑分开。