2013-09-27 51 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。