我想根据特定字段的内容对存储库中的数据进行排序。例如,我有一个具有fields role,fistName和lastName的实体人员。我想使用->orderBy('p.role', ???)排序并根据此顺序获得一个列表:教授然后是导演,然后是教师和最后的学生。
->orderBy('p.role', ???)
我的数据库示例:
通缉结果:
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 Bundle\Entity\Person p ORDER BY mySortRule ASC
希望这有帮助