2010-08-08 29 views
1

我有一個fetchRow,就是喜歡做:
Zend的數據庫表摘要fetchRow添加新對象給它

$db = new Database(); 
$data = $db->fetchRow($db->select()->where('id = ?',$id)); 

做到了,我想從文件表中檢索所有的文件,如這個:

$files = new Database(); 
$photos = $files->fetchAll($files->select()->where('id = ?',$data->id)); 

但是它返回兩個不同的對象,我怎麼能把它添加到只有一個對象呢?

如果我做的:

$this->view->photos = $photos; 
$this->view->data = $data; 

它的工作原理,但我怎麼能合併數據裏面的照片?

感謝和問候。

回答

0

嘗試

$db = new Database(); 
$data = $db->fetchRow($db->select()->where('id = ?',$id)); 

$files = new Database(); 
$photos = $files->fetchAll($files->select()->where('id = ?',$data->id)); 



array_push($photos, $data); 
+0

我嘗試過,但它沒有奏效,我認爲返回的值是對象和zend數據庫表摘要可以添加新的對象值。 最好的方面 – 2010-08-08 02:40:57

+0

你不能這樣做,因爲一個行集需要有數據水合...這不發生,直到你循環的結果(至少它沒有上次我在1.7中使用Zend_Db)。爲了完成你描述的內容,你需要手動循環這兩個行集並將它們分配給一個數組,或者如果先前已經訪問過所有數據,則可以在行集對象上調用「toArray」並獲得一個數組,但這也會將行對象轉換爲數組。 – prodigitalson 2010-08-08 03:20:45

+0

是的,我這樣做。謝謝
$ row = $ db-> fetchRow($ dado) - > toArray(); ('Fotos') - > toArray();這是一個很好的例子。
$ data =(object)array_merge($ row,$ fotos); 謝謝,最好的問候。 – 2010-08-08 03:39:08

1

如果你的表是一組不同類型的文件的數據集,那麼你需要控制它們如何水合 - 即。查詢返回哪些對象。爲此,您需要爲表創建自己的Rowset類,並將其設置爲Database類的屬性(假設其爲Zend_Db_Table)。

在這個行集合類中,您將檢查該行的屬性作爲其水合,然後選擇使用'Data'或'Photo'的類。爲了保持一致性,您還需要修改表類以處理單個記錄的水合(即使用find方法)。

+1

不知道該怎麼做,我使用Zend db表抽象的,我沒有關係,我可以做$按行> findDependentRowset調用第二個查詢( '照片'); 最好的方面。 – 2010-08-08 02:40:33

+0

你能否用我們正在討論的表格和/或表格和行類名稱的模式來更新你的問題?我不知道你有一個依賴行集,儘管everythign與你提出問題的方式和你提供的類名在同一張表中。 – prodigitalson 2010-08-08 03:15:46

+0

謝謝,我可以解決它,把所有的數組,然後合併,比我把它重新對象。 感謝您的回覆,最好的關注。 – 2010-08-08 03:39:48