选择自定义字段时,学说不会水化

时间:2015-06-17 14:29:23

标签: doctrine-orm doctrine doctrine-query

我尝试使用doctrine query buidler选择字段。

$queryBuilder = $entityManager->createQueryBuilder();
$queryBuilder->select('au.id, au.firstName')
    ->from('Api\V1\Entity\AgencyUser', 'au')
    ->orderBy('au.firstName', 'asc');
$queryBuilder->andWhere('au.agency = :agencyId')
    ->setParameter('agencyId', $agency->getId());

print_r($queryBuilder->getQuery()->getResult(Query::HYDRATE_OBJECT));exit;

结果:

Array
(
    [0] => Array
    (
        [id] => 1
        [firstName] => agency
    )

)

为什么这是一个数组?我想要保湿效果。任何想法?

1 个答案:

答案 0 :(得分:2)

您想要使用Doctrine的Partial Object Syntax

$queryBuilder->select('partial au.{id, firstName}')

至于为什么它没有返回一个对象,这来自上面链接的相同文档:

  

默认情况下,当您在Doctrine中运行DQL查询并仅为给定实体选择字段的子集时,您不会再接收对象。相反,您只接收数组作为扁平矩形结果集,类似于您直接使用SQL并加入某些数据时的方式。