Zend framework2 扩展结果集出错

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

在我的项目中,我需要一个根据结果数据创建模型的结果集。 因此,我扩展了\Zend\Db\ResultSet\ResultSet并覆盖了
当前的
方法

 /**
 * @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
调用替换此行时,
缓冲区
工作正常,我可以在我的结果集中重复多次

但我无法解释这种行为