使用doctrine在symfony3中右连接查询

时间:2016-08-26 16:36:29

标签: sql join doctrine-orm symfony right-join

我想将下面的sql查询转换为symfony中的doctrine查询。

select p.name,p.id,sum(t.amount) as bal from transactions t right join processors p on t.processor_id=p.id where user_id=18 or user_id is null group by p.id

以上代码通过汇总每个处理器的用户每笔交易的金额来从交易表中提取余额。

结果:

Processor1 --------- 43

Processor2 --------- 12

Processor3 --------- NULL

Processor4 --------- NULL

Processor5 --------- NULL

我尝试使用dql的查询是:

$sql = $procRepo->createQueryBuilder('t');
        $sql->select('p.name');
        $sql->leftJoin('t.processorId','p');
        $sql->addSelect('sum(t.amount) as bal');
        $sql->groupBy('p.id');
        $sql->orderBy('p.name')->getQuery()->getResult();

结果:

Processor1 --------- 43

Processor2 --------- 12

所以我的问题是我也想获得NULL行。

注意:我使用的是Symfony 3

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:-1)

您需要反转join语句以获取所有处理器:

$sql = $procRepo->createQueryBuilder('p');
$sql->select('p.name', 'sum(t.amount) as bal');
$sql->leftJoin('p.transaction', 't');
$sql->groupBy('p.id');
$result = $sql->orderBy('p.name')->getQuery()->getResult();
  

此查询必须在ProcessorRepository

中进行