语义错误,Symfony DQL

Semantical Error, Symfony DQL

我有一个使用 MySQL 正常执行的查询:

SELECT *
FROM td_user u
JOIN td_ranking ranking ON ranking.user_id = u.id
JOIN (
 SELECT x.user_id,
 MAX(x.id) AS default_id
 FROM td_ranking x
 GROUP BY x.user_id
) y 
ON y.user_id = ranking.user_id
AND y.default_id  = ranking.id

我尝试在 DQL 中将其转换为 运行 在 Symfony 中:

$query = $this->_em->createQuery('
  SELECT u.*,ranking.* 
  FROM UserBundle:User u 
  JOIN UserBundle:Ranking ranking 
  WITH ranking.user_id = u.id 
  JOIN (
    SELECT x.user_id, MAX(x.id) AS default_id 
    FROM UserBundle:Ranking x 
    GROUP BY x.user_id
  ) y 
  ON y.user_id = ranking.user_id 
  AND y.default_id  = ranking.id' 
);
$results = $query->getResult();

我有这个错误:

[语义错误] 第 0 行,'(SELECT x.user_id,' 附近的第 113 列:错误:Class '(' 未定义。

你有什么想法吗?谢谢!

使用本机查询

$rsm = new ResultSetMapping();
$sql = " 
    SELECT *
FROM td_user u
JOIN td_ranking ranking ON ranking.user_id = u.id
JOIN (
 SELECT x.user_id,
 MAX(x.id) AS default_id
 FROM td_ranking x
 GROUP BY x.user_id
) y 
ON y.user_id = ranking.user_id
AND y.default_id  = ranking.id
";

$result = $this->getEntityManager()->createNativeQuery($sql, $rsm)->getResult();