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

时间:2018-02-28 17:06:34

标签: symfony sorting doctrine-orm doctrine

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

我的数据库示例:

enter image description here

通缉结果:

enter image description here

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

1 个答案:

答案 0 :(得分:0)

非常惊人的情况,您可以使用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 Bundle\Entity\Person p
 ORDER BY mySortRule ASC

希望这个帮助