语义错误,Symfony DQL

时间:2017-01-02 13:57:25

标签: 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行,第113行附近'(SELECT x.user_id,':错误:类'('未定义。

你有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:2)

使用原生查询

$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();