Оставьте соединение в Doctrine Query Language - PullRequest
3 голосов
/ 22 июня 2011

Я хочу извиниться, если я не сделал достаточно исследований в Google, но, честно говоря, я не знаю точно, что искать.Моя проблема с Доктриной.Я использую платформу Symfony и хочу написать следующий необработанный запрос на DQL:

SELECT c.id AS id,
c.name AS name,
c.active AS active,
count(c2.id) AS depth,
(c.rht - c.lft) as rng
FROM (categories c
LEFT JOIN categories c2 ON ( (c2.lft < c.lft) AND (c2.rht > c.rht) AND c2.active ) )
GROUP by c.id
ORDER by c.lft ASC

Я могу написать его как необработанный запрос, но он мне нужен на DQL, поскольку я хочу использовать его для виджета sfWidgetFormDoctrineChoice,Любая помощь высоко ценится.

Заранее спасибо!

1 Ответ

3 голосов
/ 23 июня 2011

Возможное приближение будет:

$query = Doctrine_Query::create()
  ->select('c.name AS name,
            c.active AS active,
            count(c2.id) AS depth,
            (c.rht - c.lft) as rng')
  ->from('categories c')
  ->leftJoin('c.Categories c2 ON ( (c2.lft < c.lft) AND (c2.rht > c.rht) AND c2.active')
  ->groupBy('c.id')
  ->orderBy('c.lft ASC');

Но я думаю, что вы на неправильном пути. Вы проверили древнее поведение доктрины? http://www.doctrine -project.org / документация / ручной / 1_0 / нл / иерархический-данные # вложенного-набор: продвинутое-использование: выборка-а-дерево-с-отношений

...