@senpay1

Возможно ли как то использовать MySQL переменные в QueryBuilder или DQL?

Вообще я использую 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 не умеет работать с сортировкой по массиву.

Что делать?
  • Вопрос задан
  • 213 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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