У меня есть два объекта, которые связаны через отношения 1: 1, например: MyEntity.idRelatedEntity
Я хочу создать запрос Doctrine, где я могу получить данные из MyEntity
зависимости от значения из определенного столбца в RelatedEntity
. Что-то вроде этого (это, конечно, не работает):
$entity = $em ->getRepository('MyBundle:RelatedEntity') ->createQueryBuilder('e') ->leftJoin('MyBundle:RelatedEntity', 'r') ->where('r.foo = 1') ->getQuery() ->getResult();
Любая помощь приветствуется 🙂
$entity = $em ->getRepository('MyBundle:MyEntity') ->createQueryBuilder('e') ->join('e.idRelatedEntity', 'r') ->where('r.foo = 1') ->getQuery() ->getResult();
Также левое соединение не имеет смысла здесь (из-за того, что предложение, которое заставит его работать как внутреннее соединение)
Обратите внимание, что вы должны написать этот запрос в своем MyEntityRepository
public function getMyEntityWithRelatedEntity($parameter) { $query = $this->createQueryBuilder('e') ->leftJoin('e.relatedEntity', 'r') ->where('r.foo = :parameter') ->setParameter('parameter', $parameter) ->getQuery(); return $query->getResult(); }
И затем используйте его в своем контроллере / службе:
$manager = $this->getDoctrine()->getManager(); $results = $manager->getRepository('MyBundle:MyEntity')->getMyEntityWithRelatedEntity(1);