2014-02-06 2 views
3

Rank function in MySQL에서 수정 한 sql 쿼리가 있으며 Doctrine과 함께 사용하고 싶습니다.
시스템에서 내 쿼리가 마음에 들지 않아 어디에서 수정해야할지 모르겠다.MySQL에서 사용자 정의 변수를 사용하는 방법은 무엇입니까?

이 쿼리는 MySQL 자체에서 잘 작동합니다. Doctrine과 함께 사용할 때 구문 오류가 발생합니다.

$EntityManager->createQuery(...); 

이 교리 2이 문제를 해결할 수 있는가 :

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 코드를 사용하고?
Doctrine 1 (MySQL User defined variable within Doctrine and Symfony)에서 가능할 것으로 보입니다.

답변

1

EntityManager :: createQuery은 DQL 쿼리 용이며, 사용자가 임의의 쿼리를 실행하고 결과를 교리 엔터티에 매핑 할 수 있도록하기 위해 Native SQL이 필요하다고 생각합니다.

+0

나는 당신과 함께 있지만 아직 다른 가능성을 발견하지 못했습니다. – CSchulz

관련 문제