Database 避免连接到视图中的数据库

Database 避免连接到视图中的数据库,database,zend-framework,zend-db-table,Database,Zend Framework,Zend Db Table,在IndexController中,我从表中检索数据并将其发送到视图。 在视图中,我执行foreach循环并显示它。 需要从数据库中获取一种类型的数据,因此需要在视图中链接到数据库以获取它 <?php foreach ($this->datas as $data ): > <div id="<?php echo $data->data_id ?>"></div> <?php $Data = Zend_Db::fact

在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; ?>


如何避免连接到视图中的数据库?

简单:不要这样做


只需将DB逻辑从您的视图中移开。在控制器或(更好的)模型中执行
foreach
循环,获取每个元素所需的数据。或者,如果可能的话,使用
JOIN
直接组合结果。

您需要一个中间层代表您进行连接,并将结果返回到您的视图。Zend能做到吗?你能把数据加入到原始查询中吗?此外,您确实不希望连接到循环中的数据库这可能是使用类似
getData()
的方法的域模型的好地方,因此可以延迟加载数据。:)