gpt4 book ai didi

php - 将变量设置为 DQL 查询

转载 作者:行者123 更新时间:2023-11-29 06:32:29 26 4
gpt4 key购买 nike

  • 我想根据条件将变量设置到 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();

这里的 rank 是我要设置的变量

我面临的问题

  • 我无法在 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

但它不起作用。

我该怎么做?

或者有什么办法可以做到这一点

请帮忙

最佳答案

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

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

希望这对您有所帮助。

顺便说一句。在我看来,您不应在 DQL 字符串中使用 PHP 变量,而应使用参数,您可以阅读有关它们的信息 here .

关于php - 将变量设置为 DQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27060784/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com