我想在将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更改为数组,但同样的问题也出现了。 我错过了什么吗?
答案 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()
。我希望它现在有效。肯定会寻找合适的解决方案。