@drboboev

Как сделать вложенный запрос в Doctrine DQL?

Добрый день.

Нужно вот такой запрос:
SELECT name,
       (SELECT id
        FROM tree t2
        WHERE t2.left_key < t1.left_key AND t2.right_key > t1.right_key
        ORDER BY t2.right_key-t1.right_key ASC LIMIT 1) AS parent
FROM tree t1
WHERE t1.left_key >= 1 AND t1.right_key <= 6
ORDER BY right_key-left_key DESC


превратить в DQL. Либо в NativeSQL, но с правильным ResultMapping.

С DQL не получается из-за LIMIT, который не работает. А setMaxResults() не работает для вложенных запросов.
А с NativeSQL не получается из-за ResultMapping.

В сущности Tree есть следующие поля: id, name, left_key, right_key, level.
Запрос должен возвращать таблицу с колонкой parent, которая обозначает id родителя.
  • Вопрос задан
  • 602 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Flying
Возможно вам стоит обратить внимание на готовую реализацию деревьев для Doctrine? Есть также интеграция для этого пакета в Symfony. Это позволит вам не изобретать велосипед, а использовать готовое, проверенное и весьма популярное решение освободив время от написания и поддержки своей реализации для других задач.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы