symfony2: как использовать group_concat в QueryBuilder

У меня есть вложенный набор (с использованием дерева Gedmo) сущность, называемая «Местоположение». Сущность «Квартира» имеет location_id и что мне нужно сделать, чтобы сопоставить скалярное значение, называемое, например, «путь», для запроса, который возвращает все квартиры.

В Doctrine1 у меня был такой код:

/**
* Add "path" to each element
* 
* @param Doctrine_Query $query
* @param string $separator
*/
protected function addScalar_path(Doctrine_Query $query, $separator=", ")
{
    $subquery = "k99.root_id=o.root_id AND k99.lft<=o.lft AND k99.rgt>=o.rgt AND k99.level<=o.level" ;

    $query->addSelect("(SELECT GROUP_CONCAT(k99.name ORDER BY k99.level SEPARATOR '$separator') FROM Location k99 WHERE $subquery) AS path") ;
}

Примечание: псевдоним "o" используется для основного запроса. Этот код позволит мне использовать

{foreach .... as $appartment}
   {$appartment->path}
...

, что напечатает:

Australia, Victoria, Melbourne, ...other children...

Как сделать то же самое в D2? И как вообще включить расширения доктрины в мой проект symfony2?

19
задан Zeljko 1 June 2012 в 12:33
поделиться