2014-02-06 30 views
3

我有一個從Rank function in MySQL改編的sql查詢,我想和Doctrine一起使用它。
看來,系統不喜歡我的查詢,我不知道從哪裏開始修復它。如何在MySQL中使用用戶定義的變量?

這個查詢在MySQL本身工作正常,當我用它與教條我得到一個語法錯誤。

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

是否有可能與學說2來處理呢?
它似乎有可能與主義1(MySQL User defined variable within Doctrine and Symfony)。

回答

1

EntityManager :: createQuery是用於DQL查詢,我認爲Native SQL是你所需要的(允許你執行任意查詢並將結果映射到原則實體)。

+0

我和你在一起,我還沒有找到另一種可能性。 – CSchulz

相關問題