要生成报告I(即每当某个日期某个值不存在时为0)我使用日历表。
问题是我的查询中的任何额外条件都需要进入join子句。这使得其他如此灵活的QB非常不灵活。
$this->query->select('dt AS date, count o.orderId) as orders');
$this->query->from('calendar_table', 'ct');
$this->query->leftJoin('ct', 'orders', 'o',
'o.orderDate = ct.dt AND o.SOME_EXTRA_CONDITION = VALUE');
$this->query->groupBy('dt');
问题是o.SOME_EXTRA_CONDITION = VALUE部分。有什么方法可以从join子句和一个额外的QB调用中获得这个条件,比如
$this->query->where(o.SOME_EXTRA_CONDITION = VALUE)?
当然将条件置于正常的where子句中会产生相同的结果,因为在最终结果的连接之后发生了,但我需要的只是右表上的where子句之前加入。
答案 0 :(得分:0)
来自official doctrine documentation
的leftJoin
示例
// Example - $qb->leftJoin('u.Phonenumbers', 'p', Expr\Join::WITH, $qb->expr()->eq('p.area_code', 55))
// Example - $qb->leftJoin('u.Phonenumbers', 'p', 'WITH', 'p.area_code = 55')
// Example - $qb->leftJoin('u.Phonenumbers', 'p', 'WITH', 'p.area_code = 55', 'p.id')
public function leftJoin($join, $alias, $conditionType = null, $condition = null, $indexBy = null);
尝试相应地更改leftJoin
$this->query->leftJoin('ct.orders', 'o', 'WITH','o.orderDate = ct.dt AND o.SOME_EXTRA_CONDITION = VALUE');