如何订购数据两次。但是让第一个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();
我正在尝试从数据库中获取最后 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();