2011-12-13 3 views
1

나는 Doctrine2 엔티티에 images 콜렉션이 있습니다. 내가 $result->getImages()를 호출 할 때Doctrine2 빈 콜렉션은 불필요한 쿼리를 생성합니다.

$qb = $this->createQueryBuilder('page'); 
    $qb->select('page, image'); 
    $qb->where('page.id = ?1') 
     ->leftJoin('page.images', 'image') 
     ->setParameter(1, $id); 

$result = $qb->getQuery()->getOneOrNullResult(); 

images 컬렉션 데이터베이스에 추가 호출이 비어 : 여기 내 쿼리입니다. 이 문제를 어떻게 방지 할 수 있습니까?

답변

3

네이티브 쿼리와 동일한 문제가있어서 새로 매핑 된 컬렉션을 초기화 된 것으로 표시하여 해결했습니다.

if($result->getImages() instanceof PersistentCollection) 
    $result->getImages()->setInitialized(true); 
} 

Doctrine은 더 이상 자식이 있는지 확인하기 위해 DB를 호출하지 않습니다. 거대한 최적화!

+0

감사합니다. 어느 시점에서 이것은 교리에서도 수정 된 것으로 보입니다. 더 이상이 문제가 없습니다. –

+0

Doctrine의 어떤 버전을 사용합니까? 이 해킹은 v2.2.3에서 작동합니다. – Jerem

관련 문제