Symfony Doctrine,从带有连接的子查询中选择

时间:2014-05-19 20:31:46

标签: php sql symfony doctrine-orm

Haven已经能够为此找到一个可靠的解决方案,但我有一个mySQL查询,我想将其转换为Doctrine。它是来自带有连接的子查询的选择,我可能已经读过某些地方,Doctrine中的子查询中不允许连接。

这是SQL:

SELECT part, SUM(qty) as qty FROM (SELECT part, SUM(qty) as qty FROM sub LEFT JOIN main ON main.id = main_id WHERE hold != 1 GROUP BY name, part) AS tbl GROUP BY part

这是我尝试过的,但都错了。

 $em = $this->getDoctrine()->getManager();

    $q = $em->createQuery('v');
    $q2 = $em->createSubQuery()
        ->select('m.part, sum(s.qty) qty')
        ->from('Sub s')
        ->leftJoin('s.main m')
        ->where('s.hold != 1')
        ->groupBy('m.part');

    $q->select('m.part, sum(qty)', $q2->getDQL());

我得到的第一个错误之一是:

FatalErrorException: Error: Call to undefined method Doctrine\ORM\EntityManager::createSubQuery() in ....Controller.php line 238

我很确定这不是我做错了,但这是第一件事。那么getManager()显然没有createSubQuery()功能?这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

没有类似createSubQuery()的方法。看看答案:https://stackoverflow.com/a/10763358