如何在zend框架2中返回一个对象数组?

Pat*_*cow 4 php arrays object zend-db zend-framework2

我在zf2中进行查询,然后我返回一个object(Zend\Db\ResultSet\HydratingResultSet)我必须foreach打开的,以便进入属性.

我想默认获取一个对象数组.

这是我的一些代码:

'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;
}
Run Code Online (Sandbox Code Playgroud)

查询

public function fetchById()
{
    $select = $this->getSelect()->where(array('id' => $Id));
    return $this->select($select);
}
Run Code Online (Sandbox Code Playgroud)

这让我回来了:

object(Zend\Db\ResultSet\HydratingResultSet)[459]
      protected 'hydrator' => 
        object(Zend\Stdlib\Hydrator\ClassMethods)[415]
          protected 'underscoreSeparatedKeys' => boolean true
          private 'callableMethodFilter' => 
          ....
          ....
Run Code Online (Sandbox Code Playgroud)

任何想法我需要做什么?

lim*_*mos 5

正如Steve所指出的,您可以像数组一样迭代结果集.但是如果你需要它作为一个实际的数组,ZF2提供了iteratorToArray函数,它将把它转换为一个数组.

public function fetchById($Id) {
    $select = $this->getSelect()->where(array('id' => $Id));
    $results = $this->select($select);

    return \Zend\Stdlib\ArrayUtils::iteratorToArray($results);
}
Run Code Online (Sandbox Code Playgroud)

  • 好像第二个参数$递归应该是假的. (3认同)