2011-12-13 68 views
1

我有一個Doctrine2實體集合images。這裏是我的查詢: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(); 

當我打電話$result->getImages()images集合爲空,沒有對數據庫的額外調用。我怎樣才能防止這一點?

回答

3

我有原生查詢相同的問題,我解決了它通過標記新鮮映射的集合初始化。

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

主義不要再打電話給DB來檢查是否有孩子。巨大的優化!

+0

感謝您的支持。在某種程度上,這似乎也固定在教義上。我不再有這個問題。 –

+0

您使用哪個版本的學說?這個破解與v2.2.3一起使用 – Jerem