Zend framework 如何将Doctrine2结果对象作为关联数组获取?
我有一个简单的实体,它是一个保存用户数据的表 我想获取特定用户的所有列作为一个数组,然后对它们进行json_编码,但我得到的是一个实体对象,我必须对每个值使用get方法。我只需要一个用户表值的关联数组。 我尝试过但不起作用的代码(返回的实体对象)如下所示: 一, 二,Zend framework 如何将Doctrine2结果对象作为关联数组获取?,zend-framework,doctrine,doctrine-orm,Zend Framework,Doctrine,Doctrine Orm,我有一个简单的实体,它是一个保存用户数据的表 我想获取特定用户的所有列作为一个数组,然后对它们进行json_编码,但我得到的是一个实体对象,我必须对每个值使用get方法。我只需要一个用户表值的关联数组。 我尝试过但不起作用的代码(返回的实体对象)如下所示: 一, 二, PS:我正在使用z2d2项目,这是doctrine2与Zend框架的集成。当您执行$accounts=$qb->getQuery()->getResult()时传递给getResult的参数告诉它如何生成将返回的结果集 阵列水化
PS:我正在使用z2d2项目,这是doctrine2与Zend框架的集成。当您执行
$accounts=$qb->getQuery()->getResult()时代码>传递给getResult的参数告诉它如何生成将返回的结果集
阵列水化
如果需要数组,则应传递数组hydrations的常量doctor\ORM\Query::hydration\u array
$accounts=$qb->getQuery()->getResult(条令\ORM\Query::水合物数组)
如果您使用的是findOneBy()
,那么它将始终返回一个实体。由于find的工作原理,除了返回实体之外,您不能告诉它通过任何其他方式进行水合
在此场景中,您需要做的是在实体内部创建一个getValues()
方法,该方法返回实体的数组,如下所示:
public function getSimpleValues(){
return array(
'id' => $this->getId(),
'lft' => $this->getLft(),
'rgt' => $this->getRgt(),
'name' => $this->getName(),
'md5Name' => $this->getMd5Name(),
'owner' => $this->getOwner()->getId(),
'etag' => $this->getEtag()
);
}
API文档:您还可以使用getArrayResult()作为传递常数以获取数组的快捷方式:
$accounts = $qb->getQuery()->getArrayResult();
您应该使用包含值2的常量,它是内置的,您可以在查询的最后部分这样做
$qb->getQuery()->getResult( Doctrine\ORM\Query::HYDRATE_ARRAY );
感谢您快速准确的回复。不同水合模式的常量是:Query::hydroge\u OBJECT Query::hydroge\u ARRAY Query::hydroge\u SCALAR Query::hydroge\u SINGLE\u SCALAR如果我想使用像$this->doctrine->em->find('Entity\User',5)
?这是我的问题,这不是问题的答案。
$accounts = $qb->getQuery()->getArrayResult();
$qb->getQuery()->getResult( Doctrine\ORM\Query::HYDRATE_ARRAY );
$data = $this->entity->findOneBy(array('key' => $value));
$hydrator = new \DoctrineModule\Stdlib\Hydrator\DoctrineObject($this->_em, $entity_name);
$array = $hydrator->extract($data);