首页 > 解决方案 > Laravel:反转分页查询的结果

问题描述

我正在使用 Laravel 5.6,我想反转分页查询的结果。这就是我想要做的:

$chats = Chats::where('message_id', $message_id)->orderBy('id', 'DESC')->paginate(5);
if(!empty($chats)) {
    $data['messages'] = $chats->reverse()->values();
    $data['status'] = 200;
    $data['create_user_id'] = Auth::id();
}else{
    $data['error'] = "No chats available";
}

但它从结果中删除了分页。假设我在表中有这 10 个值

1, 2, 3, 4, 5, 6, 7, 8, 9, 10

现在我想要6, 7, 8, 9, 10第一页结果和1, 2, 3, 4, 5第二页结果,特别是按那个顺序。

我怎么得到这个?请帮忙!!!

标签: phplaravelpagination

解决方案


出色地,

->orderBy('id', 'DESC')

在您的分页查询中,应该给您

`10, 9, 8, 7, 6`

然后只需反转输出中的内容即可

`6, 7, 8, 9, 10`

代码示例:

// $chats here are instance of LengthAwarePaginator
// so we use ->items() to get the array of paginated objects
$chats = Chats::orderBy('id', 'desc')->paginate(5);
$data = [];

if ($chats->count()) {
    $data['reverseModels'] = collect($chats->items())->reverse();
    $data['reverseIds'] = collect($chats->items())->reverse()->pluck('id');
} else {
    $data['error'] = 'Error';
}

推荐阅读