使用条件/过滤器获取连接集合

时间:2015-08-31 21:17:52

标签: doctrine-orm

我正在尝试加载实体并获取加入另一个实体。

$qb = $this->_em->createQueryBuilder();
$qb->addSelect('be, becs');
$qb->from('MeMyBundle:Entity', 'be');
$qb->leftJoin('be.associations', 'becs');
$qb->andWhere('becs.attribute=:attribute');
$qb->setParameter('attribute', $filterAttribute);

提取连接是必要的,以便以后避免所有这些单个SQL结果。

另一方面,不使用我的filterAttribute(在连接上设置where条件)会导致昂贵的水合过多的连接对象,这是我不需要的。

但是这导致当没有匹配的连接实体存在时,我的结果是空的。但我需要匹配的或空集合。

我怎样才能摆脱这个陷阱?

1 个答案:

答案 0 :(得分:2)

尝试使用leftJoin()方法的第3和第4个参数。

$qb = $this->_em->createQueryBuilder();
$qb->addSelect('be, becs');
$qb->from('MeMyBundle:Entity', 'be');
$qb->leftJoin('be.associations', 'becs', 'WITH', 'becs.attribute=:attribute');
$qb->setParameter('attribute', $filterAttribute);

请参阅http://doctrine-orm.readthedocs.org/en/latest/reference/query-builder.html#high-level-api-methods