KNP Paginator SUM возвращает неверные данные
Я использую Symfony 2.8, ORM это Doctrine.
Вот часть моего построителя запросов:
$queryBuilder = $this->createQueryBuilder(self::ALIAS)
->leftJoin(self::ORDER, OrderRepository::ALIAS)
//some left joins
->where(OrderRepository::ALIAS.'.state IN (:state)')
->setParameter('state', [
OrderInterface::STATE_SHIPPED,
])
//some selects
->addSelect(
'IF ('
.CouponRepository::DISCOUNT_FIXED.' IS NOT NULL, '.
'ROUND('.CouponRepository::DISCOUNT_FIXED.'/100, 2) , '.
'ROUND(SUM(ci.quantity*ci.unitPrice/100)*'.CouponRepository::DISCOUNT_PERCENTAGE.'/100, 2)'.
') as '.OrdersReport::COUPON_VALUE)
//other selects
->groupBy(OrderRepository::ID)
->orderBy(OrderRepository::ID, 'DESC');
После использования представленного KNP Paginator выберите "не давать правильные данные для выхода". Когда я dump()
$queryBuilder->getQuery()->getResulty()
, данные в порядке, но пагинатор делает что-то с этим.
Что делает paginator: Предположим, у меня есть таблица order и order_item. Я просто получаю order_item.quantity и order_item.unitPrice, и я хочу суммировать их или дать что-то другое, поэтому я использую это IF
в SQL.
SQL возвращает: 15, скажем так. KNP Paginator возвращает 5. Почему? Потому что 5 - это первая строка в order_item, а это не SUM
другие ряды.
Как я могу получить хорошие данные? Мой SQL работает хорошо, но paginator делает что-то странное.