在 Laravel 中分页时跳转到最后一个可用页面

问题描述 投票:0回答:1

在 Laravel 中,当我使用长度感知分页时,假设我位于数据集的最后一页,并且删除了该页面上的所有记录,Laravel 将为我返回一个空数据集,因为

page
查询参数引用不存在的偏移量的页码,即使可能仍然有其他可用记录。

用户控制器.php:

...
$pager = \App\Models\User::paginate(10);

return view('user_list', concat($pager));

user_list.blade.php:

@foreach($pager->data() as $user)
   <div>
      <span>{{$user->name}}</span> &nbsp;
      <a href="{{route ('user.destroy', $user->id)}}">Delete</a>
   </div>
@endforeach

在这种情况下:

  1. 如何判断当前偏移量/页没有更多记录。
  2. 如何判断前一个偏移量/页面是否仍包含活动记录。
  3. 如何优雅地强制 Laravel 重定向到上一页而不影响用户体验?
php laravel database pagination
1个回答
0
投票

您可以使用 isEmpty() 方法检查结果,然后重定向到最后一页

    $pager = \App\Models\User::paginate(10);

// Delete records

    if ($pager->isEmpty()) {
    // Redirect to previous page
    return redirect()->to($pager->previousPageUrl());
}

您还可以传递 $pager->isEmpty() 的结果来显示当前偏移量/页面没有更多记录的消息。

© www.soinside.com 2019 - 2024. All rights reserved.