使用Zend框架时如何从多个表中获取数据?

4
有没有使用Zend从多个数据库表中获取数据的最佳实践?我想知道,而不是最终希望在不久的将来重构我编写的代码。我正在阅读Zend文档,它说:
“您无法指定要从JOIN的表返回的列/行集。这样做会触发PHP错误。这样做是为了确保保留Zend_Db_Table的完整性。即Zend_Db_Table_Row只应引用从其父表派生的列。”
因此,我认为我需要使用多个模型--是这样吗?例如,如果我想获取特定用户ID的所有订单,其中日期介于两个日期之间,我该怎么办?
我知道可以从控制器访问两个不同的模型,然后在操作中组合它们各自的数据,但我不会感到满意,因为我一直在阅读survivethedeepend.com和它告诉我不应该这样做...

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

谢谢!

3个回答

5

1

不要再把Zend_Db_Table想象成你的“模型”了。

你应该编写自己的、富有领域特色的模型类,放置在控制器(和视图)与持久化逻辑(使用Zend_Db/Zend_Db_Table/Zend_Db_Select从数据库中加载/存储数据的任何东西)之间。


你是在暗示这个模型将访问从Zend_Db_Table_Abstract扩展的进一步类吗? - olive
@Ihnz 不是的,他是在暗示模型是你的应用程序,而控制器和视图只是它的接口。 - Gordon
1
@lhnz - 实际上是的,但戈登所说的其他一切也是正确的。你可能有一些持久化/数据映射器类,这些类被更多面向领域的模型类使用,但你的模型应该不仅仅是数据库抽象。如果你发现自己在控制器中直接使用扩展Zend_Db_anything的类,那么这是一个很大的警示信号,说明你需要创建一个更丰富的模型。 - timdev

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接