如何在没有任何Symfony 2答案的情况下找到所有问题?

时间:2014-01-29 22:25:01

标签: symfony doctrine-orm eager-loading

我有两个实体问答,并有适当的关系。

我想要一种优化的方式(更少的资源)来找到所有问题(只有id和title),而没有学说的答案。

感谢您的回答。

1 个答案:

答案 0 :(得分:1)

在你的控制器......

使用QueryBuilder:

$repository = $this->getDoctrine()->getRepository('AcmeStoreBundle:Question');
$qb = $repository->createQueryBuilder('Question');
$query = $qb
    ->select('DISTINCT Question.id, Question.title')
    ->leftJoin('Question.answers', 'Answer', $qb->expr()->isNull('Answer.id'))
    ->getQuery();

$questions = $query->getArrayResult();

或DQL(部分对象:

$query = $em->createQuery("select partial Question.{id,title} 
                           from MyApp\Domain\Question Question 
                           left join Question.answers Answer 
                           where Answer.id is NULL");

$questions = $query->getResult();

查询构建器将返回一个数组,而DQL将返回部分对象

见: