Php 将带有子查询的SQL转换为DQL
我正在使用Doctrine和DQL函数Php 将带有子查询的SQL转换为DQL,php,mysql,symfony,doctrine-orm,doctrine,Php,Mysql,Symfony,Doctrine Orm,Doctrine,我正在使用Doctrine和DQL函数createQuery(),我有这个查询: SELECT id, 1 + ( SELECT count( * ) FROM user a WHERE a.points > b.points ) AS RNK, points FROM user b 此查询返回使用字段points计算的排名 如何转换此查询以在createQuery()中使用 目前我有: $query = $this->getEntityManager()-
createQuery()
,我有这个查询:
SELECT id, 1 + (
SELECT count( * )
FROM user a
WHERE a.points > b.points ) AS RNK, points
FROM user b
此查询返回使用字段points
计算的排名
如何转换此查询以在createQuery()中使用
目前我有:
$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
");
但这会返回一个语法错误:“[syntax error]第0行,第14列:错误:应为文本,获得了“SELECT”
请尝试以下操作:
$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");
因为您想获得相同实体(用户)的编号,为什么不简单地执行以下操作:
$query = $this->getEntityManager()->createQuery("
SELECT u.id, 1+count(u.*) as RNK, u.points FROM AppBundle\Entity\User u
");
从文件中:
$query = $em->createQuery('SELECT COUNT(u.id) FROM Entities\User u');