我应该把它变成一个模型吗?

时间:2011-05-23 13:10:08

标签: php zend-framework models

我有一系列复杂的选择查询,我需要从应用程序的不同部分调用。我想我应该将它们全部分组到模型类中,但是想验证一下。

查询全部使用同一组5个表。这些表中的每一个都有自己的Table Data Gateway类和Row Data Gateway类,但我的新查询类不会实现任何这样的模式(因为它不包装表或行)。我的新课程将调用已建立的表和行数据网关。

此外,来自用户的值不能直接包含在查询中,因此我计划在新类中进行一些预处理。此预处理包括访问DB以查找值等

这听起来不公平吗?我认为这应该是如何使用模型的,但我对这些事情可能会非常错误,所以我会很感激任何意见或建议。 (仅供参考,我使用的是Zend Framework)。

1 个答案:

答案 0 :(得分:3)

查询不在模型部分中。它们与持久性相关(模型不处理持久性)。

这些复杂的查询应该在Persistence层中,这里是Table Data Gateway类。

我将表数据网关类命名为“DAO”(数据访问对象)。 Table Data Gateway是一种DAO,因为您可以使用DAO来帮助您从文件,Web服务中获取内容......

因此,您可以保留实际的类,并添加DAO来管理这些复杂的查询。 此DAO不提供对特定数据库表的访问权限,但它仍然允许您访问数据源(由多个数据库表组成)。

修改:

我建议你创建一个 DAO interface(它可能是空的)。您的数据库表将实现此接口。您的新类也将实现此接口,但不会扩展Zend_Db_Table

简而言之,您正在重新定义/重命名持久层,从“Zend Db Table”到“DAO”(这使它更通用)。 Zend Db Table是DAO的