首页 > 解决方案 > Laravel Collection - 将特定项目放在最后一个位置

问题描述

我有具有不同角色的数据库表,我需要owner将具有角色的项目放在最后的集合。这是数据库示例:

ID 角色
1 行政
2 用户
3 用户
4 所有者
5 用户

如何使用这些数据对集合进行排序以获取owner最后一个角色的项目?我只能考虑按字母顺序对其进行排序,保存到某个变量并从集合中删除具有所有者角色的记录,然后将其粘贴到集合中。但这对我来说似乎不必要地复杂,没有更简单的方法吗?

我需要这个的原因是因为我需要删除所有选定的用户并确保用户/所有者是最后一个。

标签: laravelsortingeloquentlaravel-collection

解决方案


您可以使用条件渲染。为此,您需要使用DB::raw 示例:

Model::select('id', 'role')
  ->orderBy(DB::raw('role = "owner"'), 'ASC');

或使用速记:

Model::select('id', 'role')->orderByRaw("role = 'owner' ASC");

它将放在owners最后。

在这里检查小提琴:http ://sqlfiddle.com/#!9/9d2b64/2


推荐阅读