Установите переменную в запрос 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 с Doctrine. взгляните на createNativeQuery функция http://doctrine-orm.readthedocs.org/en/latest/reference/native-sql.html

Если вы хотите использовать его с Symfony2 Entity, вы также должны взглянуть на Doctrine\ORM\Query\ResultSetMapping класс, который используется для создания правильных сущностей из результата.

Надеется, что это помогает.

Btw. По моему мнению, вы не должны использовать переменные PHP в вашей строке DQL, а вместо этого работать с параметрами, вы можете прочитать о них здесь: http://doctrine-orm.readthedocs.org/en/latest/reference/query-builder.html#binding-parameters-to-your-query

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]