学说2:如何通过关联的价值来搜索实体?

时间:2012-03-29 20:55:02

标签: php symfony doctrine-orm

假设我有一个Account实体和一个AccountData实体(存储一些较少使用的属性,如性别等)。

帐户和帐户数据之间的关系是一对一的,帐户“拥有”帐户数据。

我正在尝试使用Doctrine 2 / Symfony 2来解决如何根据AccountData中的属性提取帐户。

例如,如何使用AccountData-> gender ='female'搜索所有帐户?

2 个答案:

答案 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