2013-09-27 52 views
0

我正在使用TableGateways以及使用exchangeArray()方法获取数据库结果的Object Mapper。这种方法适用于一次性获取数据。根据一张表的结果查询两张表 - Zend 2

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

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

这与加入没有任何关系。

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

谢谢。

+0

你在说“左连接”吗? – akond

回答

0

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

嗯,事情是,MVC模式将为这样的事情增加一定的复杂度,并不一定是坏事。

您仍然可以像以前一样执行相同的操作,通过结果&获取相关数据。但是,不要在显示数据时执行此操作,而应在控制器中执行此操作,或者最好在service or DataMapper object中执行此操作。这是复杂程度的增加,因为您必须循环遍历结果两次。一旦收集关联数据&一次以显示它。再说一次,这不一定是坏事,因为它不会让你改变数据的外观,而不需要改变它的收集方式,反之亦然,从而使你的代码更易于维护。

或者,您可以使用ORM(如Doctrine)为您提供一次函数调用中的关系映射(其实质是相同的两个循环)。当然,这意味着您需要了解ORM的工作原理和API。