у меня есть два класса 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
у меня есть следующая функция, которая должна возвращать QueryBuilder
object:
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
, я был бы очень признателен...
Спасибо за вашу помощь!