我有一个简单的实体,它是一个存放我的用户数据的表
而且我想以数组的形式获取特定用户的所有列,然后对其进行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/

10-11 23:54
查看更多