Вообще я использую KnpPaginationBundle для пагинации и сортировки, выходит следующая картина:
1.Вариант с DQL:$em = $this->getDoctrine()->getManager();
$query = $em->createQuery(
'SELECT a, @C:=@C +1 FROM (SELECT @row_number := 0) init, GameServerBundle:Server\Server a
LEFT JOIN a.map m1
ORDER BY a.isVip DESC'
);
DQL не умеет работать с @ (переменными) - выбрасывает ошибку
2.Вариант с NativeQueryBuilder:$query2 = $em->createNativeQuery(
'
SELECT a.*,
s2.id AS id_service,
s2.priority AS `priority`,
@row_number := @row_number := @row_number + 1 AS `top`
FROM (SELECT @row_number := 0) init, `server` a
LEFT JOIN servers_services ss ON (a.id = ss.server_id)
LEFT JOIN service s2 ON (s2.id = ss.service_id)
WHERE a.is_banned = 0
ORDER BY ss.service_id IS NULL, priority DESC
',
$rsm
);
Тут все прекрасно срабатывает, ДА ВОТ ТОЛЬКО KnpPaginationBundle НЕ УМЕЕТ РАБОТАТЬ С NativeQuery object... Принимает только массив от NativeQueryResult, а тут уже KnpPaginationBundle не умеет работать с сортировкой по массиву.
Что делать?