Php 如何在zend framework 2中返回对象数组?
我在zf2中执行查询,我得到一个Php 如何在zend framework 2中返回对象数组?,php,arrays,object,zend-framework2,zend-db,Php,Arrays,Object,Zend Framework2,Zend Db,我在zf2中执行查询,我得到一个对象(Zend\Db\ResultSet\HydratingResultSet),我必须打开该对象才能访问属性 我希望在默认情况下获得一个对象数组 以下是我的一些代码: 工厂 'address-mapper' => function ($serviceManager) { $mapper = new Mapper\Address(); $mapper->setDbAdapter($serviceManager->get('Zen
对象(Zend\Db\ResultSet\HydratingResultSet)
,我必须打开该对象才能访问属性
我希望在默认情况下获得一个对象数组
以下是我的一些代码:
工厂
'address-mapper' => function ($serviceManager) {
$mapper = new Mapper\Address();
$mapper->setDbAdapter($serviceManager->get('Zend\Db\Adapter\Adapter'));
$mapper->setEntityPrototype(new Entity\Address);
$mapper->setHydrator(new \Zend\Stdlib\Hydrator\ClassMethods);
return $mapper;
}
询问
public function fetchById()
{
$select = $this->getSelect()->where(array('id' => $Id));
return $this->select($select);
}
这让我回想起:
object(Zend\Db\ResultSet\HydratingResultSet)[459]
protected 'hydrator' =>
object(Zend\Stdlib\Hydrator\ClassMethods)[415]
protected 'underscoreSeparatedKeys' => boolean true
private 'callableMethodFilter' =>
....
....
你知道我需要做什么吗?Zend\Db\ResultSet\HydratingResultSet有一个
toArray
方法。因此,您可以这样做以获得结果的多维数组,而不是结果集:
public function fetchById()
{
$select = $this->getSelect()->where(array('id' => $Id));
$arrayResults = $this->select($select)->toArray()
return $arrayResults;
}
正如Steve所指出的,可以像数组一样迭代结果集。但如果您需要将其作为实际数组,ZF2将提供一个iteratorToArray函数,该函数将为您将其转换为数组
public function fetchById($Id) {
$select = $this->getSelect()->where(array('id' => $Id));
$results = $this->select($select);
return \Zend\Stdlib\ArrayUtils::iteratorToArray($results);
}
我希望得到一个对象数组,而不是数组数组,因为
HydratingResultSet
实现了Iterator
接口,因此您可以使用foreach
来循环结果,就好像它是一个数组一样。如果你真的需要一个对象数组,你必须使用这样的foreach
手动构建数组。这就是我在这里寻找的:如果你在那里发布你的答案,我会接受它!谢谢!似乎第二个参数$recursive应该为false。与