두 클래스가 User
과 Role
인데 ROLE_PROVIDER
역할을 가진 사용자에 대한 쿼리를 반환하는 QueryBuilder
을 만들어야합니다. 나는 다음과 같은 언급 필드에 대한 조각이 폼 클래스 정의에서 심포니 2의 엔티티 양식 필드이 필요합니다 단골 UserRepository
에서 다음Symfony 2의 Doctrine 2 - 연관에 의한 QueryBuilder 필터링
$builder->add('provider', 'entity', array(
'class' => 'ElCuadreAccountBundle:User',
'property' => 'username',
'query_builder' => function(UserRepository $ur) {
return $ur->getUsersByRoleQB('ROLE_PROVIDER');
},
'required' => true,
));
과 내가 가지고 반환해야 다음 함수, QueryBuilder
목적 :
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는 기본적으로 연관에 의한 필터링을 지원하지 않습니다. this page에서 그들은 이렇게 말하며 DQL
을 사용하여 필터링하는 것이 좋습니다. 내 문제는 문장에서 QueryBuilder
개체를 만드는 방법을 찾지 못했다는 것입니다. 오른쪽 DQL
쿼리를 제공 할 수 있다면 매우 감사 할 것입니다 ...
도움을 주셔서 감사합니다!
감사합니다! 정말 완전한 대답입니다. 한 가지 질문입니다. 원래 질문과 관련이 없지만, 여기에 있습니다 ... 나는 여러 번 symfony 2와 doctrine 2의 새로운 버전이 나오고 사람들이 새로운 기능을 제공하지만,'php bin/vendors install'을 실행하는 것에 지쳐 있고 symfony 나 교리를 업그레이드하지 않습니다 ... 어떻게 업그레이드 할 수 있습니까? 또는 그 새로운 버전이 공식적 일 것 인 때? 당신의 대답에 감사드립니다 !!! – Throoze
D2.2에 대한 내용은 http://www.doctrine-project.org/에서 확인할 수 있습니다. S2는 D2.1이 S2.1이 출시 될 때까지 통합 될 예정이며 이번 여름에 출시 될 예정입니다. 그러나 D2.2를 직접 설치하고 autoload.php에서 경로를 조정할 수 있으며, 대부분의 경우 교리 코드가 작동해야합니다. 조심해야 할 점을 문서에서 확인하십시오. – Cerad
답변 해 주셔서 감사합니다. – Throoze