Php Zend framework 2\Zend\Db\ResultSet\ResultSet->;toArray()不返回记录
我只是通过扩展ZendPhp 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
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()方法将修复此快捷方式。这节省了我很多时间。