У меня есть большой метод репозитория, который генерирует регулярный запрос в бэкэнде, некоторые параметры, которые я передаю этому методу репозитория, это max-results, firs-result, order-by и order-by-dir для контроляобщее количество записей для отображения, нумерация страниц и порядок записей.Проблема в том, что когда я в какой-то конфигурации, например (4-я страница, макс-результаты: 10, первый-результат: 40), это должно дать мне от 40-го до 50-го записи +1000 записей в базе данных, но только возвращает -10 записейиз +1000 записей.
Код QB
....
return $total ? //this is a bool parameter to find out if I want the records or the records amount
$qb
->select($qb->expr()->count('ec.id'))
->getQuery()->getSingleScalarResult() :
$qb//these are the related entities all are joined by leftJoin of QB
->addSelect('c')
->addSelect('e')
->addSelect('pr')
->addSelect('cl')
->addSelect('ap')
->addSelect('com')
->addSelect('cor')
->addSelect('nav')
->addSelect('pais')
->addSelect('tarifas')
->addSelect('transitario')
->orderBy(isset($options['sortBy']) ? $options['sortBy'] : 'e.bl', isset($options['sortDir']) ? $options['sortDir'] : 'asc')
->getQuery()
->setMaxResults(isset($options['limit']) ? $options['limit'] : 10)
->setFirstResult(isset($options['offset']) ? $options['offset'] : 0)
->getArrayResult();
Сценарий 1: QueryBuilder с orderBy и базой данных
QB: В этом случае результатом является только один объект с ожидаемыми данными, но только один объект, а не 10, когда существует более 1000 записей DB: В этом случае я получаю 10 записей, но ста же сущность (тот же вывод из QB, но повторяется 10 раз)
Сценарий 2: QueryBuilder без orderBy и базы данных
QB: В этомесли результат соответствует ожидаемым 10 записей, отфильтрованных из +1000 записей
DB: В этом случае результат соответствует ожидаемым 10 записей
Единственная проблема в этом сценариичто я не могу заказать свои результаты, используя QB.
EnviroОписание
- Symfony: 3.4.11
- PostgeSQL: 9.2
- PHP 7.2
- ОС: Ubuntu Server 16.04 x64
Почему доктрина / postgres дают мне такой результат?
Исключений нет, пропущенные конфигурации - это только результаты, когда я использую orderBy
Заранее спасибо!