我有一个简单的实体,它是一个存放我的用户数据的表
而且我想以数组的形式获取特定用户的所有列,然后对其进行json_encode编码,但是我得到的是一个实体对象,我将必须对每个值使用get方法。我只想要我的用户表值的关联数组。
我尝试但不起作用的代码(返回的实体对象)如下:
1。
$qb = $this->em->createQueryBuilder();
$qb->add('select', 'a')
->add('from', 'Entities\Adminprofile a')
->add('where', 'a.userid = 3333');
$accounts = $qb->getQuery()->getResult();
2。
$account = $this->em->getRepository('Entities\Adminprofile')->findOneBy(
array('userid' => '3333'));
PS:我使用z2d2 Project,这是doctrine2集成到Zend框架中。
最佳答案
当您执行$accounts = $qb->getQuery()->getResult();
时,传递给getResult的参数告诉它如何对将返回的结果集进行水合处理。
阵列水合
如果需要数组,则应将CONSTANT
传递给数组水合Doctrine\ORM\Query::HYDRATE_ARRAY
。
如果您使用的是findOneBy()
,则总是返回一个实体。由于查找方法的内部原理,您不能告诉它通过除返回实体以外的任何其他方式进行水化处理。
在这种情况下,您需要做的是在实体内部创建一个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文件:http://www.doctrine-project.org/api/orm/2.1/namespace-Doctrine.ORM.Internal.Hydration.html
关于zend-framework - 如何获得Doctrine2结果对象作为关联数组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7259256/