Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to return an array of objects in zend framework 2?

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?

like image 491
Patrioticcow Avatar asked Dec 25 '22 20:12

Patrioticcow


1 Answers

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);
}
like image 62
limos Avatar answered Jan 12 '23 06:01

limos