gpt4 book ai didi

php - 此结果是一个仅向前的结果集,不支持在向前移动后调用 rewind() - Zend

转载 作者:IT老高 更新时间:2023-10-29 00:15:36 25 4
gpt4 key购买 nike

在 Zend 应用程序中,我使用 Zend\Db\TableGatewayZend\Db\Sql 从 MySQL 数据库中检索数据,如下所示。

模型 -

public function getCandidateEduQualifications($id)
{
$id = (int) $id;

$rowset = $this->tableGateway->select(function (Sql\Select $select) use ($id)
{
$select->where
->AND->NEST->equalTo('candidate_id', $id)
->AND->equalTo('qualification_category', 'Educational');
});

return $rowset;
}

查看-

我只是迭代 $rowset 并在 View 中回显。但是当尝试回显两次或更多次时它会出错。单次迭代有效。

This result is a forward only result set, calling rewind() after moving forward is not supported

我可以通过将它加载到 View 中的另一个数组来解决它。但这是最好的方法吗?有没有其他方法可以解决这个问题?

$records = array();
foreach ($edu_qualifications as $result) {
$records[] = $result;
}

编辑 -

$resultSet->buffer(); 解决了这个问题。

最佳答案

您收到此 Exception 因为这是预期的行为。 Zend 使用 PDO获取由 Zend\Db\TableGateway\TableGateway 返回的 Zend\Db\ResultSet\Resultset。 PDO 结果集默认使用只进游标,这意味着您只能循环遍历该集一次。

有关游标的更多信息,请查看 Wikipediathis文章。

由于 Zend\Db\ResultSet\Resultset 实现了 PHP Iterator您可以使用 Zend\Db\ResultSet\Resultset:toArray() 方法或使用 iterator_to_array() 函数提取集合的数组。在潜在的大型数据集上使用这个函数时一定要小心!关于游标的最好的事情之一恰恰是它们避免一次性引入所有内容,以防数据集太大,因此有时您不想一次将所有内容放入数组中。

关于php - 此结果是一个仅向前的结果集,不支持在向前移动后调用 rewind() - Zend,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18567219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com