你好,我在 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 列:错误:预期字符串结尾,得到 '('”)
或者它是不允许的,我必须安装和使用一些学说扩展?
The FIELD()
函数是 MySQL 特定的,因此不是 Doctrine 2 库的一部分。
您可以使用自定义 DQL 函数,该函数已由 Doctrine 的首席开发人员 (Benjamin Eberlei) 创建。https://github.com/beberlei/DoctrineExtensions/ 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
");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)