Doctrine2空集合创建了不必要的查询

时间:2011-12-13 10:05:50

标签: php symfony doctrine-orm

我有一个带有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集合为空时,会对数据库进行额外调用。我该如何防止这种情况?

1 个答案:

答案 0 :(得分:3)

我遇到了与本机查询相同的问题,我通过将新映射的集合标记为已初始化来解决它。

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

Doctrine不再调用数据库来检查是否有孩子。巨大的优化!