0

我正在使用 TableGateways 以及使用 exchangeArray() 方法获取数据库结果的对象映射器。这种方法非常适合一次性获取数据。

但是,我正在努力呈现一个结果表,我想通过执行查询在 foreach 循环中为每一行获取另一个结果集。

在常规 PHP 中,我会简单地为第一组数据编写一个循环,然后在第一个循环中编写另一个循环,该循环将为每条记录执行一个查询。这不遵循 Zend 的 MVC 方法,那么我将如何实现相同的目标?

这与连接无关。

我有一张发票和付款表。我正在输出一张付款表,对于每笔付款,我想输出与该特定付款相关的发票。我正在尝试使用 Zend 的 MVC 和 TableGateway 模式来实现这一点。

谢谢。

4

1 回答 1

0

在常规 PHP 中,我会简单地为第一组数据编写一个循环,然后在第一个循环中编写另一个循环,该循环将为每条记录执行一个查询。这不遵循 Zend 的 MVC 方法,那么我将如何实现相同的目标?

嗯,问题是 MVC 模式会给这样的事情增加一定程度的复杂性,这不一定是坏事。

您仍然可以像以前一样执行相同的操作,遍历结果并获取相关数据。但是,不是在显示数据时执行此操作,而是在控制器中执行此操作,或者最好在服务或 DataMapper 对象中执行此操作。这是增加的复杂性,因为您必须循环两次结果。一次收集相关数据,一次显示它。同样,这不一定是一件坏事,因为它不允许您更改数据的外观而无需更改数据的收集方式,反之亦然,从而使您的代码更易于维护。

或者,您可以使用诸如Doctrine之类的ORM在一个函数调用中为您提供关系映射(在引擎盖下它基本上执行相同的两个循环)。当然,这意味着您需要了解 ORM 的工作原理及其 API。

于 2013-09-29T12:56:33.027 回答