如何在MySQL中使用用户定义的变量?

时间:2014-02-06 21:12:28

标签: php doctrine-orm

我有一个改编自Rank function in MySQL的SQL查询,我想将它与Doctrine一起使用 似乎系统不喜欢我的查询,我不知道从哪里开始修复它。

这个查询在MySQL本身运行正常,当我在Doctrine中使用它时出现语法错误。

SELECT    l.*,
          @points:=l.playerPoints + l.organisationPoints,
          @curRank := if(@points <> @lastPoints, @curRank + 1, @curRank) AS rank,
          @lastPoints:= @points as points
FROM      leaderboard l, (SELECT @curRank := 0) r, (SELECT @lastPoints := 0) lp, (SELECT @points := 0) p
ORDER BY  l.playerPoints + l.organisationPoints DESC;
  

[语法错误]第0行,第10列:错误:预期的IdentificationVariable   | ScalarExpression | AggregateExpression |功能声明|   PartialObjectExpression | “(”Subselect“)”| CaseExpression,得到'@'

我正在使用以下PHP代码:

$EntityManager->createQuery(...);

是否可以使用Doctrine 2来处理这个问题? 似乎可以使用Doctrine 1(MySQL User defined variable within Doctrine and Symfony)。

1 个答案:

答案 0 :(得分:1)

EntityManager :: createQuery 用于DQL查询,我认为Native SQL是您需要的(允许您执行任意查询并将结果映射到学说实体)。