symfony - 如何在 DQL 中按 NULL 排序?

标签 symfony doctrine-orm dql

我正在使用 Symfony2 框架和 Doctrine ORM 构建一个应用程序。我有一张航空公司的表格,其中缺少一些 IATA 代码。我正在输出一个列表,按此 IATA 代码排序,但我得到了不希望的结果,即具有空 IATA 代码的记录排在顶部。

在 MySQL 中,这很简单,使用 ORDER BY ISNULL(code_iata), code_iata但我不知道 DQL 的等价物是什么。我试过

$er->createQueryBuilder('airline')->orderBy('ISNULL(airline.codeIata), airline.codeIata', 'ASC')

但这给了我一个语法错误。

Doctrine 文档也没有给我答案。有办法吗?

最佳答案

您可以在 DQL 中使用以下技巧最后对 NULL 值进行排序

$em->createQuery("SELECT c, -c.weight AS HIDDEN inverseWeight FROM Entity\Car c ORDER BY inverseWeight DESC");
HIDDEN关键字(自 Doctrine 2.2 起可用)将导致忽略 inverseWeight结果集中的字段,从而防止不受欢迎的 mixed results .

(排序字段值被反转,因此顺序也必须反转,这就是查询使用 DESC 顺序,而不是 ASC 的原因。)

积分属于this answer .

关于symfony - 如何在 DQL 中按 NULL 排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12652034/

相关文章:

exception - Symfony2 - 操纵来自内核异常监听器的请求/响应

php - 如何在 Symfony2 Doctrine2 中获取不同的 DBAL 连接

php - 如何在dql中搜索实体数组?

php - 来自具有附加字段的实体的 Symfony 表单

symfony - 自定义 Symfony/Twig 表单主题,如何检测 "global"错误?

symfony - 在 CKeditor 中编辑 Twig 模板

mysql - Symfony2 一对一关联双向

symfony - 强制 Doctrine 在 JOIN 中加载关联实体

mysql - 按日期检查表格中有多少条目

java - DQL 在 DFC 中删除 group_name