2012-06-29 54 views
0

在IndexController中,我從表中檢索數據並將它們發送到視圖。 鑑於我做foreach循環並顯示它。 需要從數據庫中獲取一種類型的數據,因此在視圖中鏈接到數據庫以獲取它。避免連接到視圖中的數據庫

<?php foreach ($this->datas as $data): > 
    <div id="<?php echo $data->data_id ?>"></div> 
    <?php 

$Data = Zend_Db::factory('pdo_mysql', $config); 

    $select = $Data->select() 
      ->FROM('data') 
      ->WHERE('data_id = ?',$data->anchor); 
     $name = $Data->fetchRow($select); 
    ?> 

<span class="nick_name"><?php echo $name?></span> 

<?php endif; ?> 

如何避免連接到視圖中的數據庫?

+0

您需要一個代表您連接的中間層,並將結果返回到您的視圖。 Zend能做到嗎? – duffymo

+1

你可以加入原始查詢中的數據嗎?此外,你真的不想連接到循環內的數據庫 –

回答

1

簡單:只是不這樣做。

只需將該數據庫邏輯遠離您的視圖即可。在你的控制器中執行一個foreach循環,或者(甚至更好)模型,爲每個元素提取你想要的數據。或者,如果可能,請使用JOIN直接合並結果。

+1

這可能是一個像getData()方法的域模型的好地方,所以可以延遲加載數據。 :) – RockyFord