gpt4 book ai didi

Symfony2 createQuery 按字段排序

转载 作者:行者123 更新时间:2023-12-02 23:47:38 25 4
gpt4 key购买 nike

嗨,我在 phpmyadmin 中编写了这个查询,它可以在 gr8 中运行。

SELECT u.* FROM users AS u WHERE
u.id = 14469 OR
u.id = 685

ORDER BY u.id, field(u.id, 14469, 685)

但我需要用 symfony2 编写它。它会是什么样子?因为这给我带来了一个错误:

    $query=$this->_em->createQuery("SELECT u FROM UserBundle:User u WHERE
u.id = 14469 OR
u.id = 685

ORDER BY u.id, field(u.id, 14469, 685)
");

渲染模板期间抛出异常(“[语法错误]第 0 行,第 122 列:错误:预期字符串结束,得到 '('”)

或者这是不允许的,我必须安装和使用一些学说扩展?

最佳答案

FIELD() 函数是 MySQL 特定的,因此不是 Doctrine 2 库的一部分。您可以使用自定义 DQL 函数,该函数已由 Doctrine 的首席开发人员 (Benjamin Eberlei) 创建。 https://github.com/beberlei/DoctrineExtensions/ .

此外,我很确定您需要将 FIELD() 函数定义为隐藏函数,因为您无法在 DQL 中按 order by 使用函数。将其标记为隐藏将阻止函数输出在结果集中被水合。类似的东西:

$query=$this->_em->createQuery("SELECT u, field(u.id, 14469, 685) as HIDDEN field FROM UserBundle:User u WHERE
u.id = 14469 OR
u.id = 685
ORDER BY u.id, field
");

关于Symfony2 createQuery 按字段排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19867118/

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