SELECT count(u.id) AS seasons, u.username AS username, sum(s.position = 1) AS wins, sum(s.totalPoints) AS totalpoints, sum(s.numOfQue) AS numOfQue, (sum(s.totalPoints)/sum(s.numOfQue)) AS avgPtsForMatch FROM statistics s INNER JOIN users u ON s.user_id = u.id GROUP BY u.username ORDER BY avgPtsForMatch DESC
Który w klasie Repository zrobiłem tak:
public function getRanking(){ $qb = $this->createQueryBuilder('s'); $qb->select( 'u.username AS username' ,'(sum(s.totalPoints)/sum(s.numOfQue)) AS avgPtsForMatch' ,'count(u.id) AS seasons' ,'sum(s.numOfQue) AS numOfQue' ,'sum(s.totalPoints) AS totalpoints' ,'sum(s.position = :win) AS wins' ) ->innerJoin('s.user', 'u') ->groupBy('u.username') ->orderBy('avgPtsForMatch', 'DESC') ->setParameter('win', 1) ;
Niestety zapis : ,'sum(s.position = :win) AS wins' nie działa wywalając błąd:
[Syntax Error] line 0, col 240: Error: Expected Doctrine\ORM\Query\Lexer::T_CLOSE_PARENTHESIS, got '='
Jak to powinienem zrobić ?