【发布时间】:2016-06-15 21:39:02
【问题描述】:
我正在使用 Doctrine 构建以下查询:
SELECT
c0_.id AS id0,
c0_.name AS name1,
SUM(a1_.credit) AS sclr2,
SUM(a1_.debit) AS sclr3
FROM
complexes c0_
LEFT JOIN
acc_records a1_
INNER JOIN
acc_codes a2_
ON (a2_.id = a1_.acccode_id AND a2_.l1 = 3 AND a2_.l2 = 10)
ON c0_.id = a1_.complex_id
GROUP BY c0_.id
如您所见,我将 ON 语句并排放置以进行嵌套连接查询。
以下代码将 ON 语句放在相应的 JOIN 语句旁边。
$er->createQueryBuilder('c')->select('c.id, c.name,sum(ad.credit) as cr, sum(ad.debit) as dr')
->leftJoin('c.accrecords','ad')
->innerJoin('AccCode', 'ac', 'WITH','ac.id = ad.acccode and ac.l1=3 and ac.l2=10')
->groupBy('c.id')
->getQuery()->getSQL();
结果是这样的:
SELECT
c0_.id AS id0,
c0_.name AS name1,
SUM(a1_.credit) AS sclr2,
SUM(a1_.debit) AS sclr3
FROM
complexes c0_
LEFT JOIN
acc_records a1_ ON c0_.id = a1_.complex_id
INNER JOIN
acc_codes a2_ ON (a2_.id = a1_.acccode_id AND a2_.l1 = 3
AND a2_.l2 = 10)
GROUP BY c0_.id
这对我不起作用。有人有解决办法吗?
【问题讨论】:
-
只是指出我个人在 dql 和查询构建器方面的经验,当涉及到连接时 ===> 使用本机查询。
-
原生查询是指DQL吗?重点是编写 DQL 也无济于事!使用 DQL,ON 不起作用,您必须使用 WITH,我尝试创建嵌套 JOIN 语句,但最终出现异常
-
本地查询我的意思是doctrine-orm.readthedocs.io/projects/doctrine-orm/en/latest/…。我举了一个例子作为答案,只是因为我不能把它放在这里作为评论。请仅以它为例,我将来会删除它,以免被否决。 (尤其是对于 ON 而不是 WITH)
标签: php sql symfony doctrine-orm dql