Пагинатор с «$fetchJoinCollection = true» не будет соблюдать «ORDER BY» в доктрине DQL?Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Пагинатор с «$fetchJoinCollection = true» не будет соблюдать «ORDER BY» в доктрине DQL?

Сообщение Anonymous »

Странная проблема. Мы используем MariaDB 5.5 и Doctrine/orm 2.3.3 и пытаемся использовать Doctrine Paginator с DQL.
http://docs.doctrine-project.org/en/lat ... ation.html

В DQL есть предложение ORDER BY [иллюстративный пример см. ниже]. Однако результат вообще не сортируется для данного размера страницы. А если мы увеличим размер страницы, чтобы охватить весь набор результатов, сортировка станет правильной.

Код: Выделить всё

   $dql = "SELECT a, b FROM EntityA a JOIN a.propertyB b ORDER BY a.createdOn DESC";
$query = $this->em->createQuery($dql)
->setMaxResults($pageSize)
->setFirstResult($offset);
$paginator = new Paginator($query, $fetchJoinCollection=true);
....
Я сбросил sql и запустил его вручную. SQL также дал правильную сортировку. Итак, что-то вызывает проблему сортировки внутри класса Paginator Doctrine.

Когда я установил $fetchJoinCollection=false и передал его конструктору Paginator, сортировка стала правильной для любого заданного $. pageSize!

Прочитайте исходный код Doctrine [Doctrine/ORM/Tools/Pagination/Paginator.php]. При $fetchJoinCollection=true доктрина использует WhereInWalker для получения окончательного результата, что не учитывает предложение ORDER By в DQL, поскольку предложение IN() не генерирует результат в том же порядке, что и идентификаторы внутри Предложение IN().

Решение сортировки для предложения IN() можно найти в разделе Упорядочение по порядку значений в предложении SQL IN(). Но я не могу найти Doctrine, использующую это.

Кто-нибудь, обладающий внутренними знаниями Doctrine, мог бы пролить свет?! Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/164 ... in-doctrin
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • AppHarbor – /order/rpc.ashx(1): ошибка ASPPARSE: не удалось создать тип «web.order.rpc»
    Anonymous » » в форуме C#
    0 Ответы
    42 Просмотры
    Последнее сообщение Anonymous
  • Пагинатор работает только для одной веб-страницы Джанго
    Гость » » в форуме Python
    0 Ответы
    32 Просмотры
    Последнее сообщение Гость
  • Проблема с сортировкой Doctrine DQL по полю связанной сущности
    Anonymous » » в форуме Php
    0 Ответы
    36 Просмотры
    Последнее сообщение Anonymous
  • Запрос DQL: функция LOWER внезапно перестала работать [дубликат]
    Anonymous » » в форуме Php
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Поле электронной почты администратора Django с null=True, Blank=True, unique=True сохраняет пустую строку ("") вместо ну
    Anonymous » » в форуме Python
    0 Ответы
    127 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Php»