在Zend 2.2的VIEW结构中从mysql数据库中获取数据


Fetching data from mysql database in the VIEW structure of Zend 2.2?

我是php+Zend编程的新手,所以需要您的宝贵建议。1.我在mysql(phpmyadmin)中有一个表,表中的属性是~user_id、expense_id、date month、year、expense。2.我在View文件夹(Zend 2.2)中有.phtml文件(index.phtml)。它可以通过Controller页面中的indexAction()访问。代码:

返回视图模型(返回数组=>('years'=>$this->getExpenseTable()->fetchAll($user_id);)),

[如果格式不正确,很抱歉]。当我用foreach将数据库放入一个表中时,这个函数将返回数据库中的所有值。index.phtml中的代码如下:

escapeHtml($expense->expense);?>。。。。。等等

现在我的问题是:a) 我不能将另一个表中的变量'years'与同一个index.phtml文件中的另一个foreach循环一起使用。它说,"这是一个仅向前的结果集。"我尝试实现unset()和reward(),但都不起作用。b) 我想从表中获取属性"year"的唯一值(正如您可能认为的表头),并将每年的费用总和放在下面。

您有多个问题,这些问题可能应该包含在多个问题中,但无论如何,它都是:

在单个结果集上迭代多次

某些驱动程序允许缓冲。$years的值是一个Zend ResultSet对象。您可以在循环之前调用$years->buffer()来启用内部缓冲区,这样您就可以迭代两次:

// $set is ResultSet
$set->buffer();
foreach ($set as $result) {} // first time
foreach ($set as $result) {} // second time

提取年份

您可以使用简单的视图逻辑:

// example resultset
$result = array(
  array('year' => '2012', 'value' => 'foo'),
  array('year' => '2012', 'value' => 'bar'),
  array('year' => '2013', 'value' => 'baz'),
);
// store year for check
$year = null;
foreach ($result as $item) {
    if ($item['year']) !== $year) {
        $year = $item['year'];
        echo $year;
    }
    echo $item['value'];
}