我还没有找到一个可靠的解决方案,但我有一个想要将其转换为Doctrine的mySQL查询。它是一个带有连接的子查询选择,我可能在某个地方读到过在Doctrine中不允许在子查询中使用连接。
以下是SQL查询:
以下是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: 错误:在....Controller.php的第238行调用未定义的方法Doctrine\ORM\EntityManager::createSubQuery()
我非常确定这不是我唯一做错的事情,但这是出现的第一件事。因此,getManager()
显然没有createSubQuery()
函数?正确的方式是什么?