Symfony按特定字段的内容顺序排列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Symfony按特定字段的内容顺序排列相关的知识,希望对你有一定的参考价值。

我想根据特定字段的内容对存储库中的数据进行排序。例如,我有一个具有fields role,fistName和lastName的实体人员。我想使用->orderBy('p.role', ???)排序并根据此顺序获得一个列表:教授然后是导演,然后是教师和最后的学生。

我的数据库示例:

enter image description here

通缉结果:

enter image description here

Ps:我不能使用ASC或DESC,因为我的排序顺序既不是ASC也不是DESC;这是一个自定义订单

答案

非常剧情,您可以使用CASE语句来为每个字段分配自定义值,然后对其进行排序。您可以使用HIDDEN关键字。作为示例看看这个DQL:

SELECT p, CASE 
            WHEN p.role = "professor" THEN 1 
            WHEN p.role = "director" THEN 2
            WHEN p.role = "teacher" THEN 3
            WHEN p.role = "student" THEN 4
          ELSE 99 END 
            AS HIDDEN mySortRule
 FROM BundleEntityPerson p
 ORDER BY mySortRule ASC

希望这有帮助

以上是关于Symfony按特定字段的内容顺序排列的主要内容,如果未能解决你的问题,请参考以下文章

sql ORDER BY 按特定顺序排列多个值?

在 Symfony2 中按多个值对数据库中的记录进行排序

Mysql中ORDER BY 排序怎么使用?指定顺序和多字段排列

如何对mySQL数据库中某些特定字段进行排序?

c++ - 按特定顺序排列向量元素

CONVERT_TEXT(转换为可排序格式)