Zend framework2 扩展结果集出错
在我的项目中,我需要一个根据结果数据创建模型的结果集。 因此,我扩展了\Zend\Db\ResultSet\ResultSet并覆盖了Zend framework2 扩展结果集出错,zend-framework2,resultset,Zend Framework2,Resultset,在我的项目中,我需要一个根据结果数据创建模型的结果集。 因此,我扩展了\Zend\Db\ResultSet\ResultSet并覆盖了当前的方法 /** * @return array|\ArrayObject|null */ public function current() { $data = $this->dataSource->current(); if ($this->returnType === self::TYPE_ARRAYOBJECT
当前的
方法
/**
* @return array|\ArrayObject|null
*/
public function current()
{
$data = $this->dataSource->current();
if ($this->returnType === self::TYPE_ARRAYOBJECT && is_array($data)) {
/** @var $ao ArrayObject */
$ao = $this->getModelClass($data['Type']);
if ($ao instanceof ArrayObject || method_exists($ao, 'exchangeArray')) {
$ao->exchangeArray($data);
}
return $ao;
}
return $data;
}
并将该类作为结果集添加到我的TableGateway:
return new TableGateway('Bookings', $dbAdapter, null, new \MyApp\Db\ResultSet\Entry());
如果我在结果中迭代一次,效果会非常好。但是如果对结果重复两次或更多次,valid
方法总是返回false。
我已经在ResultSet上调用了buffer
方法,但它仍然不起作用
如果我删除自己的类并使用\Zend\Db\ResultSet\ResultSet,我可以多次迭代结果
有人能看出错误吗 我找到了解决问题的办法。 在我的
current
方法的第一行中,我以数组的形式获取当前记录。当我用parent::current
调用替换此行时,缓冲区
工作正常,我可以在我的结果集中重复多次
但我无法解释这种行为