Laravel按特定值排序结果

Dar*_*man 5 mysql sql-order-by laravel eloquent

我有这行代码从数据库中获取结果:

'clanMembers' => User::find(Auth::user() -> clan_id) -> where('clan_id', '=', Auth::user() -> clan_id) -> orderBy('username') -> get()
Run Code Online (Sandbox Code Playgroud)

目前它按用户名订购.我希望通过clan_rank字段将其更改为order.此clan_rank字段只包含3个不同的值.这些是:

1. Owner
2. Admin
3. Member
Run Code Online (Sandbox Code Playgroud)

我希望首先与业主订购我的结果,然后是管理员,然后是会员.如何更改我的代码行以实现这些结果?

Mar*_*łek 36

你需要使用orderByRaw:

而不是orderBy你应该使用的部分

orderByRaw("FIELD(clan_rank , 'Owner', 'Admin', 'Member') ASC");
Run Code Online (Sandbox Code Playgroud)