我正在尝试为唯一用户选择 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) 分组,但这会将随机对象与最大分数相关联,而不是同一个对象..
有人对此有解决方案吗?Distinct似乎不起作用...
生成的查询:
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
值得一提的是,用户是一种关系。当我在其他文件上尝试这个时,它工作正常......