【问题标题】:Laravel: reverse the result of pagination queryLaravel:反转分页查询的结果
【发布时间】:2018-12-16 21:12:34
【问题描述】:

我正在使用 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 出现在第二页结果中,特别是按照这个顺序。

我如何得到这个?请帮忙!!!

【问题讨论】:

  • “它从结果中删除了分页”是什么意思?你的控制器返回什么?

标签: php laravel pagination


【解决方案1】:

嗯,

->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';
}

【讨论】:

  • 我将它创建为 API。我需要按原样给出结果。
  • 在控制器中,它不允许我在分页中反转结果。如果您有任何工作示例,请告诉我。
【解决方案2】:

我有一个查看员工出勤率的功能,在这里我通过按日期降序对结果进行分页。在这里我得到了正确的结果,即新出勤到旧出勤。

    public function viewAttendance($id){
        $q = Attendance::where('emp_id','=',$id)
           ->orderBy('date','desc')
           ->select('attendance.*')
           ->paginate(10);
        return $q;
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-31
    • 1970-01-01
    • 2016-07-08
    • 1970-01-01
    • 2021-09-11
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多