Doctrine 2 в Symfony 2 -Фильтрация QueryBuilder по ассоциации

у меня есть два класса Userи Role, и мне нужно сделать QueryBuilder, который возвращает запрос для пользователей, которые имеют роль ROLE_PROVIDER. Мне нужно это для поля формы сущности в Symfony 2. В определении класса формы у меня есть следующий фрагмент для упомянутого поля :

$builder->add('provider', 'entity', array(
    'class'    => 'ElCuadreAccountBundle:User',
    'property' => 'username',
    'query_builder' => function(UserRepository $ur) {
                         return $ur->getUsersByRoleQB('ROLE_PROVIDER');
                       },
    'required' => true,
));

, а затем в моем пользовательском UserRepositoryу меня есть следующая функция, которая должна возвращать QueryBuilderobject:

public function getUsersByRoleQB($role) {
    $qb = $this->createQueryBuilder('u');
    return $qb->join('u.roles','r')
              ->where($qb->expr()->in('r.role',$qb->expr()->literal($role)))
              ->orderBy('u.username', 'ASC');
}

Конечно, это не работает, но я вставил его, чтобы проиллюстрировать свои потребности.

Я осмотрелся и обнаружил, что Doctrine2 изначально не поддерживает фильтрацию по ассоциации. В этой странице так и говорят, и предлагают использовать DQLдля такого рода фильтрации. Моя проблема в том, что я не нашел, как сделать объект QueryBuilderиз предложения DQL. Если бы вы могли также предоставить мне правильный запрос DQL, я был бы очень признателен...

Спасибо за вашу помощь!

5
задан hakre 23 May 2012 в 23:12
поделиться