Doctrine distinct createQueryBuilder

时间:2013-04-26 19:39:54

标签: doctrine-orm doctrine distinct symfony-2.1

我正在尝试为唯一身份用户选择MAX得分对象。

因此,用户应该是截然不同的,我应该获得用户(订单)的最高分数,并且我需要获得其他对象值,例如dataAdded,以获得此最高分数。

    $query = $this->createQueryBuilder('s');
    $query->select('DISTINCT s.user, s');
    $query->where('s.challenge = :challenge')->setParameter('challenge', $challenge);

    $query->andWhere('s.date_added BETWEEN :monday AND :sunday')
       ->setParameter('monday', $startDate->format('Y-m-d'))
       ->setParameter('sunday', $endDate->format('Y-m-d'));

    $query->orderBy('s.score', 'DESC');

    //$query->groupBy('s.user');
    $query->setMaxResults($limit);

    $results = $query->getQuery();

无论我如何尝试,我无法区分工作。我已尝试过MAX(s.score)组,但这会将随机对象与最高分相关联,而不是相同的对象..

有没有人有解决方案?区别似乎不起作用......

生成的查询:

SELECT DISTINCT s.user, s FROM Digital\ApplicationBundle\Entity\ChallengeScore s WHERE s.challenge = :challenge AND (s.date_added BETWEEN :monday AND :sunday) ORDER BY s.score DESC

但是错误;(

[Semantical Error] line 0, col 18 near 'user, s FROM': Error: Invalid PathExpression. Must be a StateFieldPathExpression

值得一提的是用户是一种关系。当我在其他文件上尝试这个时,这很好用......

1 个答案:

答案 0 :(得分:0)

如果您需要计算不同的值,可以使用countDistinct。但是,如果您必须获得所有不同的值,请使用groupBy