我正在使用TableGateways和Object Mapper,后者使用exchangeArray()方法获取数据库结果。这种方法可以一次性获取数据。
但是,我正在努力渲染一个结果表,我希望通过执行查询在每个行的foreach循环中获取另一个结果集。
在常规PHP中,我只是为第一组数据编写一个循环,然后在第一个循环中编写另一个循环,该循环将为每个记录执行查询。这不遵循Zend的MVC方法,那么我将如何实现同样的目标呢?
这与连接无关。
我有一张发票和付款表。我正在输出付款表,对于每笔付款,我想输出与该特定付款相关的发票。我试图使用Zend的MVC和TableGateway模式实现这一目标。
感谢。
答案 0 :(得分:0)
在常规PHP中,我只是为第一组数据编写一个循环,然后在第一个循环中编写另一个循环,该循环将为每个记录执行查询。这不遵循Zend的MVC方法,那么我将如何实现同样的目标呢?
嗯,问题是MVC模式会给这样的事情增加一定程度的复杂性,这不一定是坏事。
你仍然可以像以前一样做,循环结果&获取关联的数据。但是,您可以在控制器中或最好在service or DataMapper object中执行此操作,而不是在显示数据时执行此操作。这是增加的复杂程度,因为您必须循环两次结果。一旦收集相关数据&一次显示它。同样,这不一定是件坏事,因为它不会让你改变数据的样子而不需要改变它的收集方式,反之亦然,从而使你的代码更易于维护。
或者,您可以使用ORM(例如Doctrine)来为您提供一个函数调用中的关系映射(在其基本相同的两个循环下)。当然,这意味着您需要了解ORM的工作原理及其API。