如何订购数据两次。但是让第一个orderBy无效

How to order data twice. But make the firts orderBy ineffective

我正在尝试从数据库中获取最后 100 个帖子,而不是按 likecount 或另一个 属性 对它们进行排序,然后只输出其中的 5 个,这样我会发现最喜欢或查看或报告的 5 个帖子在最近 100 个帖子中。到目前为止我尝试的是如下所示:

$lastHundredPost = Post::orderBy('id', 'desc')->take(100);
$post = $lastHundredPost->orderBy('likecount', 'desc')->take(2)->get();

这不会首先禁用 orderBy 属性.

Laravel 5.4

如果您想从第一个查询中获取结果,请使用集合:

$lastHundredPost = Post::orderBy('id', 'desc')->take(100)->get();
$post = $lastHundredPost->sortByDesc('likecount')->take(2);

我的第一个想法是执行 sql 查询并获取 100 行,然后使用您收集的 sortBy 方法。

$lastHundredPost = Post::orderBy('id', 'desc')->take(100)->get();

$lastHundredPost->sortBy('likecount')->take(2);

另一个想法是使用 orderByRaw:

$posts = Post::orderByRaw('likecount DESC, id DESC')->take(2)->get();