[英]Doctrine convert SQL with subquery to DQL
I'm using Doctrine and DQL function createQuery()
and I have this query : 我正在使用Doctrine和DQL函数createQuery()
并且有以下查询:
SELECT id, 1 + (
SELECT count( * )
FROM user a
WHERE a.points > b.points ) AS RNK, points
FROM user b
This query return a rank calculated with the field points
. 该查询返回使用字段points
计算的等级。
How can I convert this query for use in createQuery() ? 如何转换此查询以在createQuery()中使用?
For now I have : 现在我有:
$query = $this->getEntityManager()->createQuery("
SELECT id, 1+(
SELECT count(*)
from AppBundle\Entity\User a
WHERE a.points > b.points) as RNK, points
FROM AppBundle\Entity\User b
");
But this return a syntax error : "[Syntax Error] line 0, col 14: Error: Expected Literal, got 'SELECT'"
但这会返回语法错误: "[Syntax Error] line 0, col 14: Error: Expected Literal, got 'SELECT'"
try this : 尝试这个 :
$query = $this->getEntityManager()->createQuery("
SELECT b.id, 1+(
SELECT count(a)
from AppBundle\Entity\User a
WHERE a.points > b.points) as RNK, points
FROM AppBundle\Entity\User b");
Because you want to get the number of the same entity (USER), why not simply do : 因为您要获取同一实体(USER)的编号,所以为什么不简单做一下:
$query = $this->getEntityManager()->createQuery("
SELECT u.id, 1+count(u.*) as RNK, u.points FROM AppBundle\Entity\User u
");
from the doc : doctrine chap 14.2.4 : 来自doc: 学说14.2.4 :
$query = $em->createQuery('SELECT COUNT(u.id) FROM Entities\User u');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.