DB에 OneToMany 관계가있는 두 개의 테이블이 있습니다. 'EntityRepository'에서 'createQueryBuilder()'메서드를 사용하면 조건이있는 일부 객체를 선택하려고합니다. 나의 방법이있다 :Symfony 2 OneToMany 관계 - 연관성이 잘못됨
$query = $this->getEntityManager()->createQueryBuilder();
$query->select("parent")
->from('TestAppBundle:Parent', 'parent')
->leftJoin("parent.children", 'child', 'WITH', 'child.IdP = parent.id')
->where('child.date < :date')
->andWhere('child.status = :null')
->setParameter('date', new DateTime())
->setParameter('null', 0);
그리고 그것은 거의 잘 작동한다. 나는 ArrayCollections에있는 Children Objects를 가진 Parent Objects를 얻는다. 방법은 조건이있는 부모 개체를 선택하지만 문제는 조건을 유지하지 않는 어린이 개체를 얻는 것입니다. 조건을 유지하는 부모 개체와 상태를 유지하는 자식 개체 만 가져오고 싶습니다. 이때 쿼리 후 결과를 필터링하고 Children 객체를 수동으로 제거해야합니다. 는 당신이 문제 :
선택한 자녀가 충족시키지 못하는 조건은 무엇입니까? – Jeroen
자녀는 필드 이름이 'status'입니다. 이 필드는 true 또는 false 일 수 있습니다. 나는 자녀가 상태가 false 인이 부모만을 선택하려고합니다. 즉 8000 행에서 작동합니다. 부모 개체는 100 개가되지만 어린이를 보려면 상태가 true 인 자식과 상태 false 인 자식을 얻습니다. 쿼리 후 상태가 true 인 Child 개체를 제거해야합니다. – semafor