假设我有一个Account实体和一个AccountData实体(存储一些较少使用的属性,如性别等)。
帐户和帐户数据之间的关系是一对一的,帐户“拥有”帐户数据。
我正在尝试使用Doctrine 2 / Symfony 2来解决如何根据AccountData中的属性提取帐户。
例如,如何使用AccountData-> gender ='female'搜索所有帐户?
答案 0 :(得分:17)
像这样使用Doctrine的Query Builder应该可以解决问题:
$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以获取示例。
希望它有所帮助。
答案 1 :(得分: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();
手册非常有用: http://docs.doctrine-project.org/projects/doctrine-orm/en/2.1/reference/query-builder.html