如何在 Doctrine ORM 中使用 createQueryBuilder 选择特定列?

Posted

技术标签:

【中文标题】如何在 Doctrine ORM 中使用 createQueryBuilder 选择特定列?【英文标题】:How can I select specific Columns with createQueryBuilder in Doctrine ORM? 【发布时间】:2012-09-22 12:15:11 【问题描述】:

我正在使用 Doctrine createQueryBuilder() 在 Symfony2 中构建查询。但是,我不想占用该实体中的所有列。如何只选择 ID 和名称?

$query = $this->getEntityManager()->createQueryBuilder();
        $query
            ->select('d')
            ->from('AcmeBundle:Demo', 'd')
            ->leftjoin('d.otherEntity', 'o');

        $query->setMaxResults(10);
        $results = $query->getQuery()->getResult();

非常感谢,

【问题讨论】:

***.com/questions/9465353/… 其实ORM就是Doctrine2。 Symfony 是一个网络框架。 【参考方案1】:

尝试关注,

$fields = array('d.id', 'd.name', 'o.id');
//$fields = 'partial d.id, name, partial o.id';  //if you want to get entity object

$query = $this->getEntityManager()->createQueryBuilder();
$query
    ->select($fields)
    ->from('AcmeBundle:Demo', 'd')
    ->leftjoin('d.otherEntity', 'o');

$query->setMaxResults(10);
$results = $query->getQuery()->getResult();

【讨论】:

它会水合查询结果吗? 有没有办法从 setParameter 设置字段? partial alias.comma, fields 在 symfony 2.4 上对我不起作用。它应该工作还是只适用于较新的版本? @hardik 在此处查看“水合模式”doctrine-project.org/projects/doctrine-orm/en/2.9/reference/… @Vandervals Doctrine 2.10 或更高版本。见doctrine-project.org/projects/doctrine-orm/en/2.10/reference/…

以上是关于如何在 Doctrine ORM 中使用 createQueryBuilder 选择特定列?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Doctrine ORM 查询中查找与别名相关的表?

Doctrine ORM - 如何保持静态属性

如何将 Doctrine ORM 默认跟踪策略更改为延迟显式

使用 Doctrine ORM 如何从自己的表中获取一个表来存储记录?

如何在 ORM Doctrine2 中手动设置/保留主键

如何使用ApcuCache与Symfony,Doctrine ORM和DoctrineCacheBundle