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 делает что-то странное.

0 ответов

Другие вопросы по тегам