2012-03-29 4 views
8

계정 엔티티와 AccountData 엔티티 (성별 등 덜 사용되는 속성을 저장함)가 있다고 가정 해 보겠습니다.Doctrine 2 : 협회의 가치로 엔티티를 찾는 방법?

계정과 AccountData 간의 관계는 일대일이며 계정은 AccountData를 "소유"합니다.

Doctrine 2/Symfony 2를 사용하여 AccountData의 속성에 따라 계정을 가져 오는 방법을 알아 내려고하고 있습니다.

예를 들어 AccountData-> gender = 'female'인 모든 계정을 검색하려면 어떻게해야합니까?

답변

15

예를 들어 리포지토리 클래스를 대신 사용합니다.

희망이 있습니다.

+1

조인해야합니까 ('a.AccountData', 'd')? –

+0

@ g, 맞습니다. – orourkedd

1

뭔가 같은 :

$em = $this->getEntityManager(); 
    $qb = $em->createQueryBuilder(); 

    $qb->addSelect('account'); 
    $qb->addSelect('accountData'); 

    $qb->from('ZaysoCoreBundle:Account','account'); 

    $qb->leftJoin('account.accountData', 'accountData'); 

    $qb->andWhere($qb->expr()->eq('accountData.gender',$qb->expr()->literal('female'))); 

    $accounts = $qb->getQuery()->getResult(); 

매뉴얼은 매우 유용하다 :

$repository = $this->getDoctrine()->getRepository('YourBundle:Account'); 

$query = $repository->createQueryBuilder('a') 
    ->join('a.AccountData', 'd') 
    ->where('d.gender = :gender') 
    ->setParameter('gender', 'female') 
    ->getQuery(); 

$female_accounts = $query->getResult(); 

당신이에 대한 http://symfony.com/doc/current/book/doctrine.html#joining-to-related-records을 확인할 수 있습니다 트릭을 할해야이 같은 교리의 쿼리 빌더를 사용 http://docs.doctrine-project.org/projects/doctrine-orm/en/2.1/reference/query-builder.html

관련 문제