1対1の関係で接続されている2つのエンティティがあります。例: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();
また、左結合はここでは意味をなしません(内部結合のように機能させるwhere句のため)
このクエリはMyEntityRepository
に記述してください。
public function getMyEntityWithRelatedEntity($parameter)
{
$query = $this->createQueryBuilder('e')
->addSelect('r') // to make Doctrine actually use the join
->leftJoin('e.relatedEntity', 'r')
->where('r.foo = :parameter')
->setParameter('parameter', $parameter)
->getQuery();
return $query->getResult();
}
そして、それをコントローラー/サービスで使用します:
$manager = $this->getDoctrine()->getManager();
$results = $manager->getRepository(MyEntity::class)->getMyEntityWithRelatedEntity(1);