Doctrine2 LEFT JOIN条件1或条件2

时间:2015-02-25 12:46:08

标签: php postgresql symfony doctrine-orm

这件事给我留下了深刻的印象,我无法做到这样的事情,如我所拥有的ON条款(条件1或条件2)。我发现常量ON但抛出异常"预期结束字符串,得到' ON'"当我使用doctrine时,按预期自动加入,但之后我想要OR而不是条件之间的AND。这甚至可能吗?我认为这没什么特别的,但在教条中它看起来像......

$qb = $this->entity_manager->createQueryBuilder();
$result = $qb->select(array('s','pb','p','pa','a','ag','st'))
             ->from('StockContent','s','s.id_product_box')
             ->join('s.product_box','pb','WITH','s.product_box = pb OR s.product_box = pb.universal_package')
             ->join('pb.product','p')
             ->join('s.stock', 'st')
             ->leftJoin('pb.productattribute','pa')
             ->leftJoin('pa.attribute','a')
             ->leftJoin('a.attributegroup','ag')
             ->where('p.id_product = :id_product')
             ->setParameter('id_product', (int)$id_product);
if((int)$stock > 0){
    $result->andWhere('s.stock = :stock')
           ->setParameter('stock',(int)$stock);
}
$result->orderBy('pb.box_number');
return $result->getQuery()->getResult();

所以通用包是引用同一个表的另一行,我需要从stockcontent中选择内容并加入其中id_box或universal_package是stockcontent中的行

1 个答案:

答案 0 :(得分:1)

这个怎么样:

->join(
    's.product_box',
    'pb',
    Expr\Join::WITH,
    $qb->expr()->orX($qb->expr()->eq('s.product_box', 'pb'), 's.product_box = pb.universal_package')
)