这件事给我留下了深刻的印象,我无法做到这样的事情,如我所拥有的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中的行
答案 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')
)