ZF2:更改ResultSet中的行字段

时间:2014-06-10 16:57:53

标签: foreach zend-framework2 buffer resultset

我想在将ResultSet返回到Controller之前更改ResultSet中的行字段。

$resultSet->buffer();
foreach ($resultSet as $row) {
    $row->foo = $newvalue;
}
return $resultSet;

问题是,当我使用buffer()函数时,我确实可以循环遍历ResultSet并对我的行进行一些更改,但是一旦循环结束,所有更改都将消失。

我尝试在$ row上设置引用:

foreach ($resultSet as &$row)

但后来遇到了以下异常:

 Fatal error: An iterator cannot be used with foreach by reference

我也尝试将resultSet更改为数组,但同样的问题也出现了。 我错过了什么吗?

1 个答案:

答案 0 :(得分:2)

我不认为通过通常的ResultSet用法是可行的。只有在打算使用array in循环(在这种情况下为foreach())时,数组解决方案才有效。

从任何Table类 -

$arr_resultSet = array();

foreach ($resultSet as $row) {
    $row->foo = $newvalue;

    //Object is assigned instead of converting it to an array.
    $arr_resultSet[] = $row;  
}
return $arr_resultSet;

在控制器或视图文件中使用此数组 -

//Here you can access that $row object as if the $resultSet was never converted to array.
foreach($arr_resultSet as $row) {
    echo $row->foo;                   
}

不需要buffer()。我希望它现在有效。肯定会寻找合适的解决方案。