групповая функция symfony querybuilder - PullRequest
0 голосов
/ 07 января 2019

я хочу получать строки индивидуально с условием, что сумма призов равна моему параметру (цене) на самом деле я хочу ограничить количество строк в призовой сущности но я получаю эту ошибку:

SQLSTATE[HY000]: General error: 1111 Invalid use of group function

это мой запрос:

$qb = $this->createQueryBuilder('up')
        ->join('up.prize','prize')
        ->select()
        ->where('up.user = :user')
        ->andWhere('SUM(prize.prizeValue) <= :price')
        ->setParameters(['user'=>$user , 'price'=>$price])
        ->getQuery()
        ->getResult();
    return $qb;

Ответы [ 2 ]

0 голосов
/ 07 января 2019

Вы должны переместить условие Где в условие HAVING

$qb = $this->createQueryBuilder('up')
        ->join('up.prize','prize')
        ->where('up.user = :user')
        ->having('SUM(prize.prizeValue) <= :price')
        ->groupBy('up.id')
        ->setMaxResults(5);
        ->setParameters(['user'=>$user , 'price'=>$price]);

    return $qb->getQuery()->getResult();
0 голосов
/ 07 января 2019

Вы не можете использовать агрегатную функцию в предложении WHERE.

Почему агрегатные функции не разрешены в предложении where

Попробуйте это:

$qb = $this->createQueryBuilder('up')
        ->join('up.prize','prize')
        ->select('up')
        ->where('up.user = :user')
        ->having('SUM(prize.prizeValue) <= :price') // Replace with `having`
        ->setParameters(['user'=>$user , 'price'=>$price])
        ->groupBy('up') // `Group by` because you're using an aggregate
        ->getQuery()
        ->getResult();
    return $qb;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...