Reputation: 27038
I am doing a query in zf2 and i get back a object(Zend\Db\ResultSet\HydratingResultSet)
that i have to a foreach
on, in order to get to the properties.
I would like to get an array of objects by default.
here is some code i have:
factory
'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;
}
the query
public function fetchById()
{
$select = $this->getSelect()->where(array('id' => $Id));
return $this->select($select);
}
this gives me back:
object(Zend\Db\ResultSet\HydratingResultSet)[459]
protected 'hydrator' =>
object(Zend\Stdlib\Hydrator\ClassMethods)[415]
protected 'underscoreSeparatedKeys' => boolean true
private 'callableMethodFilter' =>
....
....
any ideas what i need to do?
Upvotes: 4
Views: 13074
Reputation: 1566
As pointed out by Steve, you can iterate the result set like an array. But if you need it as an actual array, ZF2 provides as iteratorToArray function that will convert it to an array for you.
public function fetchById($Id) {
$select = $this->getSelect()->where(array('id' => $Id));
$results = $this->select($select);
return \Zend\Stdlib\ArrayUtils::iteratorToArray($results);
}
Upvotes: 6
Reputation: 91
The Zend\Db\ResultSet\HydratingResultSet
has a toArray
method. So you can do this to get a multi-dimension array of the results instead of a result set:
public function fetchById()
{
$select = $this->getSelect()->where(array('id' => $Id));
$arrayResults = $this->select($select)->toArray()
return $arrayResults;
}
Upvotes: 4