使用学说查询生成器转换 mysql 查询

时间:2021-02-03 10:34:30

标签: php sql doctrine

我的查询看起来像

SELECT 
    COUNT(*) as cnt, ROUND(SUM(cost),2) as cost
FROM 
    (SELECT ROUND(SUM(cost),2) as cost FROM accounts LEFT JOIN earnings ON earnings.id = accounts.id WHERE earnings.date >= ? GROUP BY earnings.id) src;

如何使用 Doctrine 中的 $querybuilder 编写它?

我不得不提一下,收入是一天一天分配的,所以我们必须从 select 中选择。

我试过了:

        $qb = $this->em->getConnection()->createQueryBuilder();
        $qb->select('COUNT(*) as cnt, ROUND(SUM(cost),2) as cost');
        $qb->from(
            $qb->select('SELECT ROUND(SUM(cost),2) as cost')
                ->from('accounts')
                ->leftJoin('accounts', 'earnings', 'earnings', 'earnings.id = accounts.id')
                ->where('earnings.date >= :date')->setParameter(':date', $dto->getFromSqlFormat())
                ->groupBy('earnings.id')
        );

但它不起作用,我收到错误:

Warning: Illegal offset type

0 个答案:

没有答案