将SQL转换为DQL(学说)

时间:2017-09-06 12:50:43

标签: doctrine dql

我想使用Doctrine" Query Builder"将SQL请求转换为DQL。

SELECT e1.id, e1.name, (SELECT COUNT() FROM (SELECT id FROM element e2 WHERE 
        e2.parent_id = e1.id LIMIT 1000) as e3  )

FROM element e1
WHERE
    e1.parent_id = xxx
AND
    e1.element_type_id = xxx

有可能吗?

1 个答案:

答案 0 :(得分:0)

您可以为上面的SQL编写DQL,如下所示

SELECT e1.id, e1.name, COUNT(*) somealias
FROM YourBundle:Element e1
LEFT JOIN YourBundle:Element e2 WITH e1.id = e2.parent_id
WHERE e1.parent_id = xxx
AND e1.element_type_id = xxx
GROUP BY e1.id
  

我没有看到在子选择中使用LIMIT的逻辑。

如果您已将实体中的parent_id关联定义为childs,并且我猜ManyToOne为单向关系,并且doctrine将执行连接部分,那么您将不必使用{ {1}}子句和你的DQL将变得像

WITH