Php 使用Zend框架时从多个表获取数据?

Php 使用Zend框架时从多个表获取数据?,php,zend-framework,zend-db-table,Php,Zend Framework,Zend Db Table,使用Zend从多个数据库表获取数据是否有最佳实践?我想知道,而不是最终想要重构我在不久的将来编写的代码。我正在阅读Zend文档,它说: 不能从列表中指定列 已加入表格,并以表格形式返回 行/行集。这样做将引发一场战争 PHP错误。这样做是为了确保 Zend_Db_表的完整性是 保留。i、 e.Zend_Db_表行 应仅引用派生的列 从其父表 因此,我假设我需要使用多个模型,对吗?例如,如果我想获得某个特定用户id的所有订单,而该日期介于两个日期之间,我会怎么做 我知道可以从一个控制器访问两个不同

使用Zend从多个数据库表获取数据是否有最佳实践?我想知道,而不是最终想要重构我在不久的将来编写的代码。我正在阅读Zend文档,它说:

不能从列表中指定列 已加入表格,并以表格形式返回 行/行集。这样做将引发一场战争 PHP错误。这样做是为了确保 Zend_Db_表的完整性是 保留。i、 e.Zend_Db_表行 应仅引用派生的列 从其父表

因此,我假设我需要使用多个模型,对吗?例如,如果我想获得某个特定用户id的所有订单,而该日期介于两个日期之间,我会怎么做

我知道可以从一个控制器访问两个不同的模型,然后在动作中结合它们各自的数据,但我不愿意这样做,因为我一直在阅读survivethedeepend.com和

地点、原因和方式


谢谢

如果您正在阅读ZFSTDE,则在第9章中,将使用数据映射器解决此问题


另外,您可以连接两个表,只需确保首先调用select对象setIntegrityCheckfalse方法。文档说一行应该引用父表,但这并不意味着它不能:

停止将Zend_Db_表作为您的模型


您应该编写自己的、丰富的、以域为中心的模型类,将其放在控制器和视图之间,并编写持久化逻辑—任何使用Zend_Db/Zend_Db_Table/Zend_Db_Select从数据库加载/存储数据的对象。

当然,您可以同时查询多个Db表。在这里查看ZF官方文件


关于您获取单个用户的所有订单的示例,表关系就是答案

您是否建议该模型访问从Zend_Db_table_Abstract扩展而来的其他类?@Ihnz否,他建议该模型是您的应用程序,而你的控制器和视图只是它的一个接口。@lhnz-事实上,是的,但戈登刚才说的一切都是真的。您可能有一些持久性/数据映射器类供您更以领域为中心的模型类使用,但您的模型应该不仅仅是一个数据库抽象。如果您发现自己使用的类直接在控制器中扩展Zend_Db_任何内容,那么您需要创建一个更丰富的模型。