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

时间:2013-07-13 12:53:38

标签: php eclipse mysqli phpmyadmin zend-framework2

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

  

返回viewmodel(return array =>(   '年'=> $这 - > getExpenseTable() - >使用fetchall($ USER_ID); )),

[抱歉,如果格式不正确]。当我将它放入带有foreach的表中时,此函数用于返回db中的所有值。 index.phtml中的代码如下:

       escapeHtml($ expense->费用);?> .....等等......     

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

1 个答案:

答案 0 :(得分:0)

你有多个问题,或许应该包含在多个问题中,但无论如何,这里有:

在单个结果集上多次迭代

某些驱动程序允许缓冲。 $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'];
}