Доктрина 2: Как искать сущность по значению ее ассоциации? - PullRequest
9 голосов
/ 30 марта 2012

Допустим, у меня есть сущность Account и сущность AccountData (которая хранит некоторые менее используемые свойства, такие как пол и т. Д.).

Отношение между Account и AccountData однозначное, иУчетная запись «владеет» AccountData.

Я пытаюсь с помощью Doctrine 2 / Symfony 2 выяснить, как создать учетную запись в соответствии со свойством AccountData.

Например, какнайти все учетные записи с AccountData-> пол = 'женский'?

Ответы [ 2 ]

17 голосов
/ 30 марта 2012

Использование Doctrine's 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 голос
/ 30 марта 2012

Примерно так:

    $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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...