2014-11-21 3 views
0
  • 모두 varibale 값이 설정 변수 순위 경기 때 나는 상태SET DQL 쿼리에 변수

  • 가지 경우에 기초하여 DQL 쿼리에 변수를 설정합니다.

DQL 쿼리 여기

$q=$this->em->createQuery("select distinct u.id,u.city,u.country,u.designation FROM Entities\User u JOIN Entities\EventVisitor evt_vstr WITH evt_vstr.user = u.id WHERE (
          CASE 
          WHEN $a =u.designation THEN SET @rank=1 
          WHEN $b =u.country THEN SET @rank=2 
          WHEN $c =u.city THEN SET @rank=3 
          WHEN $d =u.company THEN @rank=4 
          END) order by @rank") 


          ->setFirstResult($i) 
          ->setMaxResults($max_result); 
           $results = $q->getResult(); 

순위 내가 DQL에 변수를 설정할 수 없습니다

  • 메신저에 직면

    문제가 메신저를 설정하려고하고있는 변수입니다.

오류 로그

PHP Fatal error: Uncaught exception 'Doctrine\\ORM\\Query\\QueryException' with message 'select distinct u.id, u.city,u.country,u.designation FROM Entities\\User u JOIN Entities\\EventVisitor evt_vstr WITH evt_vstr.user = u.id \n\t \t\t\t\t\tWHERE (\n\t\t\t\t\t\t\t\t\tCASE\n\t\t\t\t\t\t\t\t\t\t\t\tWHEN Co-founder =u.designation THEN SET @rank=1\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\tEND ) ' in /home/india/public_html/serve-trade-com/application/libraries/Doctrine/ORM/Query/QueryException.php:39\nStack 

하지만 그 작동하지 않습니다.

어떻게 할 수 있습니까?

또는이는

답변

1

불행하게도 나는 그 DQL에서 가능하다고 생각하지 않습니다 도와주세요,하지만 당신은 교리와 그냥 일반 SQL을 사용할 수 있습니다 할 수있는 방법입니다. 당신이 Symfony2 엔티티와 함께 ​​사용하려는 경우 createNativeQuery 기능 http://doctrine-orm.readthedocs.org/en/latest/reference/native-sql.html

살펴보고, 당신은 또한 결과 중 적절한 엔티티를 생성하는 데 사용되는 Doctrine\ORM\Query\ResultSetMapping 클래스를 살펴 보셔야합니다.

희망이 도움이됩니다.

btw. 제 의견으로는 DQL 문자열에 PHP 변수를 사용하지 말고 대신 매개 변수로 작업해야합니다 : http://doctrine-orm.readthedocs.org/en/latest/reference/query-builder.html#binding-parameters-to-your-query