Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql symfony3中的右连接查询_Sql_Join_Doctrine Orm_Symfony_Right Join - Fatal编程技术网

Sql symfony3中的右连接查询

Sql symfony3中的右连接查询,sql,join,doctrine-orm,symfony,right-join,Sql,Join,Doctrine Orm,Symfony,Right Join,我想将下面的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 上面的代码通过为每个处理器的用户汇总每个事务的金额,从事务表中获取余额 结果: 处理器1------43 处理器2------1

我想将下面的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
上面的代码通过为每个处理器的用户汇总每个事务的金额,从事务表中获取余额

结果: 处理器1------43

处理器2------12

处理器3------空

处理器4------空

处理器5------空

我用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

所以我的问题是我还想得到空行

注意:我正在使用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();
此查询必须在
处理程序或存储库中进行


当我这么做的时候,我得到了这个<代码>[Semantic Error]第0行,第80列靠近“t GROUP BY p.id”:错误:Class ModelBundle\Entity\Processor没有名为transaction的关联
是否需要向processors entityYes添加任何映射信息,这不是关系的确切名称,请,在实际代码中解决这个问题。实际上我有两个实体:Processor和Transaction
事务中的列“Processor_id”有一个多通映射。Processor实体没有任何到Transactionwell的映射,请使用
rightJoin
语句在原始查询中进行测试。它工作正常,只需要一个inversedBy和mappedBy组合:)非常感谢!