@Mariolis

В чем ошибка в запросе для пагинации в Symfony?

Есть две функции в ProductRepository:
public function getLatestProducts($currentPage = 1, $limit = 5)
    {
        $qb = $this->createQueryBuilder('p')
            ->orderBy('p.type', 'DESC')
            ->getQuery();

        $paginator = $this->paginate($qb, $currentPage, $limit);

        return $paginator;

    }

    public function paginate($dql, $page = 1, $limit = 5)
    {
        $paginator = new Paginator($dql);

        $paginator->getQuery()
            ->setFirstResult($limit * ($page - 1)) // Offset
            ->setMaxResults($limit); // Limit

        return $paginator;
    }


При вызове getLatestProducts() происходит ошибка:
An exception occurred while executing 'SELECT DISTINCT id_0 FROM (SELECT p0_.id AS id_0, p0_.title AS title_1, p0_.type AS type_2, p0_.status AS status_3, p0_.price AS price_4, p0_.price_sale AS price_sale_5, p0_.created AS created_6, p0_.updated AS updated_7, p0_.number_orders AS number_orders_8, p0_.quantity AS quantity_9, p0_.image_name AS image_name_10, p0_.serial AS serial_11 FROM product p0_) dctrn_result ORDER BY type_2 DESC LIMIT 10 OFFSET 0':

SQLSTATE[HY000]: General error: 3065 Expression #1 of ORDER BY clause is not in SELECT list, references column 'dctrn_result.type_2' which is not in SELECT list; this is incompatible with DISTINCT


Которая устраняется если из функции удалить
->orderBy('p.type', 'DESC')

В чем проблема?
Как добавить сортировку в запрос, чтобы объекты возвращались в нужном порядке?
  • Вопрос задан
  • 639 просмотров
Решения вопроса 1
myrkoxx
@myrkoxx
developer
Ето не ошибка в запросе. Вот, помотрите, как по мне ваш случай:

https://github.com/doctrine/doctrine2/issues/5622
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы