Я хочу выполнить запрос к сущности пользователей, которые выполнили определенное количество задач каждый.С каждой задачей связаны разные значения баллов, и мне нужно создать запрос, который упорядочит те, у кого наибольшее количество баллов из всех их задач за периоды времени, показанные ниже в $ timeArray.
Я ужепопытался использовать запрос SUM следующим образом:
-> select ('SUM (t.points)') -> orderBy ('t.points', 'DESC')
, но это толькодает массив суммарных баллов для всех, мне нужно вернуть объект, который я могу зациклить, и показать пользователям наибольшее количество баллов по всем их задачам за указанный период времени.
public function getTimePeriodUsers($userType = null)
{
$timeArray = [
'-1 year',
'-3 month',
'-1 month',
'-1 week',
];
foreach($timeArray as $time){
$date = new \DateTime();
$date->modify($time);
if($userType == null){
$resultsArray[$time] = $this->createQueryBuilder('u')
->leftJoin('u.userTasks', 'ut')
->leftJoin('ut.task', 't')
->leftJoin('t.challenges', 'ch')
->andWhere('ut.completed > :date')
->andWhere('u.enabled = :enabled')
->setParameter('enabled', true)
->setParameter('date', $date)
->getQuery()
->getResult();
}
return $resultsArray;
}