我正在尝试从数据库获取最后100个帖子,而不是通过likecount或其他属性订购它们,只输出其中的5个,这样我就会发现最喜欢5个帖子或查看过,或者报告过去100个帖子。我到目前为止尝试的内容如下:
$lastHundredPost = Post::orderBy('id', 'desc')->take(100);
$post = $lastHundredPost->orderBy('likecount', 'desc')->take(2)->get();
这不会禁用第一个orderBy
属性。
Laravel 5.4
答案 0 :(得分:1)
如果要从第一个查询中获取结果,请使用集合:
$lastHundredPost = Post::orderBy('id', 'desc')->take(100)->get();
$post = $lastHundredPost->sortByDesc('likecount')->take(2);
答案 1 :(得分:0)
我的第一个想法是执行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();