symfony - Doctrine:在 ORDERBY 中使用用户定义的函数

标签 symfony if-statement doctrine sql-order-by

我想要实现的是这样的:

SELECT * FROM users ORDER BY (IF ranking IS NULL, 9999, ranking) ASC

因此,我的 orderby 中需要一个 if。但似乎用户定义的函数(我创建了一个名为 ComplexIf 的函数)在 OrderBy 中不起作用。

->addOrderBy('ComplexIf(u.ranking IS NULL, 9999, u.ranking )', 'asc')

我做错了什么?我怎样才能做到这一点?

最佳答案

非常感谢 Nic,我终于找到了使用 CASE 而不是 IF 的解决方案!

$query = $this
            ->createQueryBuilder( 'a' )
            ->select('a')
            ->add('from', 'path\to\whatever\table a')
            ->addSelect('CASE WHEN a.ranking IS NULL THEN 9999 ELSE a.ranking END as HIDDEN ORD')
            ->where( 'a.deleted IS NULL' )
            ->orderBy(  'ORD', 'asc' )
            ->getQuery()
            ;     

关于symfony - Doctrine:在 ORDERBY 中使用用户定义的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23559614/

相关文章:

php - Symfony2 服务容器 - 将普通参数传递给服务构造函数

php - 在 PHPUnit 中实现给定接口(interface)的模拟对象上的未定义方法?

php - 符合 Symfony2 编码风格标准的字符串连接

php - Doctrine继承和MySQL连接表限制

r - 如何对数据进行分类并绘制图表

C++ #if#elif#endif 似乎不起作用

Javascript elseif/if else 需要帮助

Symfony 3.4.0 找不到任何要加载的 fixture 服务

php - 使用 Doctrine 按 FIELD() 排序,这可能吗?

php - 使用 Symfony 测试数据库插入