如何订购数据两次。但是让这些命令无效

时间:2018-02-02 14:21:22

标签: php mysql laravel eloquent laravel-5.4

我正在尝试从数据库获取最后100个帖子,而不是通过likecount或其他属性订购它们,只输出其中的5个,这样我就会发现最喜欢5个帖子或查看过,或者报告过去100个帖子。我到目前为止尝试的内容如下:

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

这不会禁用第一个orderBy属性。

  

Laravel 5.4

2 个答案:

答案 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();