4

我正在 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;
}

查询

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' => 
          ....
          ....

任何想法我需要做什么?

4

2 回答 2

6

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

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

    return \Zend\Stdlib\ArrayUtils::iteratorToArray($results);
}
于 2013-10-09T08:24:04.750 回答
4

Zend\Db\ResultSet\HydratingResultSet一个toArray方法。因此,您可以这样做来获取结果的多维数组而不是结果集:

public function fetchById()
{
    $select = $this->getSelect()->where(array('id' => $Id));
    $arrayResults = $this->select($select)->toArray()
    return $arrayResults;
}
于 2013-09-22T13:09:10.830 回答