我有一个改编自 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;
[Syntax Error] line 0, col 10: Error: Expected IdentificationVariable | ScalarExpression | AggregateExpression | FunctionDeclaration | PartialObjectExpression | "(" Subselect ")" | CaseExpression, got '@'
我正在使用以下 PHP 代码:
$EntityManager->createQuery(...);
是否可以用 Doctrine 2 来处理这个问题?
原则 1(MySQL User defined variable within Doctrine and Symfony)似乎是可能的。
最佳答案
EntityManager::createQuery 用于 DQL 查询,我认为 Native SQL是您所需要的(允许您执行任意查询并将结果映射到学说实体)。
关于php - 如何在 MySQL 中使用用户定义的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21614137/