Doctrine 2: How to find an object by its association cost?

Say I have an Account object and an AccountData object (which stores some less used properties like gender, etc.).

The relationship between an account and AccountData is one-to-one, and the account "owns" AccountData.

I'm trying to figure out, using Doctrine 2 / Symfony 2, how to raise an account according to a property in AccountData.

For example, how do I search all accounts with AccountData-> gender = 'female'?

+8
php symfony doctrine2
source share
2 answers

Using Doctrine Query Builder, how this should do the trick:

$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(); 

You can check out http://symfony.com/doc/current/book/doctrine.html#joining-to-related-records for an example, using the repository class instead.

Hope this helps.

+15
source share

Something like:

  $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(); 

The manual is very useful: http://docs.doctrine-project.org/projects/doctrine-orm/en/2.1/reference/query-builder.html

+1
source share

All Articles