4

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

“您不能指定从 JOINed 表中返回的列在行/行集中。这样做会触发 PHP 错误。这样做是为了确保 Zend_Db_Table 的完整性得到保留。即 Zend_Db_Table_Row 应该只引用从其派生的列父表。”

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

我知道可以从控制器访问两个不同的模型,然后将它们各自的数据组合到动作中,但我不会因为我一直在阅读survivalthedeepend.com 而感到高兴,它告诉我我不应该这样做...

在哪里,为什么以及如何?:)

谢谢!

4

3 回答 3

5

如果您正在阅读 ZFSTDE,请在第 9 章 ( http://www.survivethedeepend.com/zendframeworkbook/en/1.0/implementing.the.domain.model.entries.and.authors ) 中使用数据映射器解决此问题.

此外,您可以加入 2 个表,只需确保首先调用 select 对象的setIntegrityCheck(false)方法。文档说一行应该引用父表,并不意味着它不能:)

于 2010-08-26T19:03:11.947 回答
1

不要再将 Zend_Db_Table 视为您的“模型”。

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

于 2010-08-26T19:05:00.237 回答
1

当然,您可以同时查询多个数据库表。在这里查看官方 ZF 文档http://framework.zend.com/manual/en/zend.db.select.html#zend.db.select.building.join

至于您获取单个用户的所有订单的示例,表关系是答案http://framework.zend.com/manual/en/zend.db.table.relationships.html

于 2010-08-26T19:11:40.973 回答