【问题标题】:SET a variable into DQL query将变量设置为 DQL 查询
【发布时间】:2014-11-21 11:52:47
【问题描述】:
  • 我想根据条件将变量设置为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

但它不起作用。

我该怎么做?

或者有没有办法做到这一点

请帮忙

【问题讨论】:

    标签: php mysql doctrine-orm dql


    【解决方案1】:

    不幸的是,我认为这在 DQL 中是不可能的,但您可以将纯 SQL 与 Doctrine 一起使用。看看createNativeQuery function

    如果您想将它与 Symfony2 实体一起使用,您还应该查看 Doctrine\ORM\Query\ResultSetMapping 类,它用于从结果中创建适当的实体。

    希望这会有所帮助。

    顺便说一句。在我看来,你不应该在你的 DQL 字符串中使用 PHP 变量,而是使用参数,你可以阅读它们here

    【讨论】:

    • “不幸的是,我认为这在 DQL 中是不可能的” 可以肯定的是,但距离 Extending DQL in Doctrine 2: Custom AST Walkers 还很远,topicstarter 确实应该简单地使用 NativeQuery
    • 同意,开箱即用是不可能的;)
    猜你喜欢
    • 2012-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-02
    • 2014-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多