我想要实现的是这样的:
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/