Laravel:按特定ID排序

5

我一直在努力寻找使用Laravel的Eloquent实现类似功能的方法,但是找不到。

select id,name 
from friends 
order by id=5 desc

以下示例来自以下链接:mysql SQL:特定项先排在前面,然后对其余项目进行排序

我希望简单的 Group::orderBy('id', $id, 'DESC')->get() 能够实现,但没有这样的运气。

我也尝试使用 DB 代替,但该类的 orderBy 方法接受完全相同的参数,并且没有特定ID的选项。 是否有其他选择?

非常感谢您的所有帮助!


@azngunit81 这个 SQL 不是我写的,它来自下面显示的链接。我已经在我的表上测试了上面的 order by SQL,按 id 6 和 DESC 排序,效果非常好。这是它工作的截图:http://imgur.com/I5um7YL - adamj
1个回答

9

不确定,但是您可以尝试使用orderByRaw(),例如:

$id = 5;
Group::orderByRaw(DB::raw("FIELD(id, $id)"))
       ->get();

2
伙计,我真的欠你一个!你是怎么发现 orderByRaw 的?它根本没有列在他们的网站上,要不然我一定是瞎了。我稍微改了一下你的代码,因为 DB::raw 没有按预期正常工作,这是我的有效代码:Group::orderByRaw("id = $user_group_id DESC")->get(); - adamj
2
@adamj 很高兴你解决了这个问题。虽然没有记录,但已经添加到Laravel 4.0.8版本中。http://wiki.laravel.io/Changelog_%28Laravel_4%29 :) - Sudhir Bastakoti
1
你在2021年帮助了一位在谷歌上搜索到你的解决方案的人,此时距离该帖子发布已经过去了七年。感谢指出你的解决方案,“DB::raw("FIELD...” 对我也没用。@adamj - AlexioVay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接