Php Zend framework 2\Zend\Db\ResultSet\ResultSet->;toArray()不返回记录

Php Zend framework 2\Zend\Db\ResultSet\ResultSet->;toArray()不返回记录,php,zend-framework2,Php,Zend Framework2,我只是通过扩展ZendAbstractTableGateway并使用继承的select()函数来获取给定表中的所有记录。这个select() 我得到以下信息: 不能将作为此数据源一部分且类型为object的行强制转换为数组 更新 我算出来了 假设您已经扩展了AbstractTableGateway $resultSet = $this->select(); foreach($resultSet as $row) { echo $row->yourProperty } 试着用 (ar

我只是通过扩展Zend
AbstractTableGateway
并使用继承的
select()
函数来获取给定表中的所有记录。这个
select()

我得到以下信息:

不能将作为此数据源一部分且类型为object的行强制转换为数组

更新 我算出来了

假设您已经扩展了AbstractTableGateway

$resultSet = $this->select();
foreach($resultSet as $row) { echo $row->yourProperty }
试着用

(array)$resultSet

我有时在ZF上使用此选项,效果很好。

您应该像这样使用
UltSet

class MyClassTable extends AbstractTableGateway
{
    public function __construct(Adapter $adapter)
{
    $this->adapter = $adapter;
    $this->resultSetPrototype = new HydratingResultSet();
    $this->resultSetPrototype->setObjectPrototype(new MyClass());
    $this->initialize();
}

public function fetchAll()
{
    $resultSet = $this->select();
    return $resultSet;
}

public function fetchAllToArray()
{
    $aData = $this->fetchAll()->toArray();
    return $aData;
}
你也可以试试这个

$sql = new Sql($adapter);

$select = $sql->select();

$select->from('table');

$statement = $sql->prepareStatementForSqlObject($select); 

$results = $statement->execute();

$resultSet = new ResultSet();
$resultSet->initialize($results);

print_r($resultSet->toArray());

使用Zend\Db\ResultSet\ResultSet

我的问题正如@Fatmuemoo所指出的那样

如果您注册了自定义对象原型,代码

$resultSetPrototype = new ResultSet($entityClassName, new $entityClassName);
$instance->setResultSetPrototype($resultSetPrototype);
您必须在您的实体类中实现toArray()方法

public function toArray()
{
    return get_object_vars($this);
}

Zend_Db_结果已具有toArray()。请粘贴代码以供参考。仅供参考:如果在结果集中使用自定义数组对象原型,向实体添加toArray()方法将修复此快捷方式。这节省了我很多时间。