Сортировать результаты по sort_order с Doctrine phpcr-odm

Используя класс Document с PHPCR-ODM, можно получить результаты из репозитория классов, результаты автоматически сортируются по полю sort_order это не в классе Document, но в схеме базы данных.

Пример запроса, зарегистрированного в Symfony Profiler:

SELECT path FROM phpcr_nodes WHERE parent = ? AND workspace_name = ? ORDER BY sort_order ASC

У меня есть этот простой запрос, построенный с помощью queryBuilder:

$qb->from()
        ->document('AppBundle\Document\Product', 'product')
        ->end()
        ->where()
        ->neq()->field('product.type')->literal('category');
$query = $qb->getQuery();

Результат не отсортирован по полю sort_order как и другие запросы, и я не могу использовать orderBy Метод, поскольку это не поле класса Document.

Итак, как я могу отсортировать результаты?

1 ответ

Кто сказал, что вы не можете использовать orderBy()? Вы должны прочитать документы, потому что, конечно, это возможно. Используя тот же код и предполагая, что столбец сортировки sort_order увидеть ниже:

$qb->from()
   ->document('AppBundle\Document\Product', 'product')
   ->end()
   ->where()
   ->neq()->field('product.type')->literal('category')
   ->orderBy()->desc()->field('product.sort_order');
Другие вопросы по тегам