在 symfony3 中使用 doctrine 右连接查询
Right join query in symfony3 with doctrine
我想将下面的 sql 查询转换为 symfony 中的学说查询。
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
以上代码通过对每个处理器的用户的每笔交易金额求和,从交易 table 中获取余额。
结果:
处理器 1 ---------- 43
处理器 2 ---------- 12
处理器 3 ---------- NULL
处理器 4 ---------- 空
处理器 5 ---------- 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();
结果:
处理器 1 ---------- 43
处理器 2 ---------- 12
所以我的问题是我也想获取 NULL 行。
注意:我使用的是 Symfony 3
有人可以帮忙吗?
您需要反转 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();
This query must be made in your ProcessorRepository
.
我想将下面的 sql 查询转换为 symfony 中的学说查询。
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
以上代码通过对每个处理器的用户的每笔交易金额求和,从交易 table 中获取余额。
结果:
处理器 1 ---------- 43
处理器 2 ---------- 12
处理器 3 ---------- NULL
处理器 4 ---------- 空
处理器 5 ---------- 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();
结果:
处理器 1 ---------- 43
处理器 2 ---------- 12
所以我的问题是我也想获取 NULL 行。
注意:我使用的是 Symfony 3
有人可以帮忙吗?
您需要反转 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();
This query must be made in your
ProcessorRepository
.