在我的项目中,我需要一个 ResultSet 来创建我的模型,具体取决于结果数据。所以我扩展了 \Zend\Db\ResultSet\ResultSet 并覆盖了该current
方法。
/**
* @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;
}
并将这个类作为 ResultSet 添加到我的 TableGateway 中:
return new TableGateway('Bookings', $dbAdapter, null, new \MyApp\Db\ResultSet\Entry());
如果我遍历结果一次,它会很好地工作。但是,如果通过结果迭代两次或更多次,则valid
方法总是返回 false。我已经在 ResultSet 上调用了buffer
Method,但它仍然不起作用。
如果我删除自己的类并使用 \Zend\Db\ResultSet\ResultSet 我可以多次迭代结果。
任何人都可以看到错误吗?