Laravel 的分页
在其他框架中,分页是令人头痛的。Laravel 使它变得轻而易举,它可以通过在 Controller 和 View 中添加几行代码来生成分页。
基本用法
分页项有很多种方法,但最简单的方法是在查询构建器或 Eloquent 查询中使用 paginate 方法。开箱即用的 Laravel 负责根据用户查看的当前页面设置限制和偏移。默认情况下,当前页面由 HTTP 请求的?page query string 参数值检测。当然,Laravel 会自动检测此值并插入由 paginator 生成的链接中。
现在让我们说我们想在查询时调用 paginate
方法。在我们的示例中,paginate 的传递参数是你希望每页显示的项目数。在我们的例子中,假设我们想要每页显示 10 个项目。
<?php
namespace App\Http\Controllers;
use DB;
use App\Http\Controllers\Controller;
class UserController extends Controller
{
/**
* Show all of the users for the application.
*
* @return Response
*/
public function index()
{
$users = DB::table('users')->paginate(10);
return view('user.index', ['users' => $users]);
}
}
注意: 目前,使用
groupBy
语句的分页操作无法由 Laravel 有效执行。如果你需要将groupBy
与分页结果集一起使用,建议你查询数据库并手动创建分页器。
简单的分页
假设你只想在分页视图中显示下一个和上一个链接。Laravel 使用 simplePaginate
方法为你提供此选项。
$users = DB::table('users')->simplePaginate(10);
在视图中显示结果
现在让我们在视图中显示分页。实际上,当你在 Eloquent 查询中调用 paginate
或 simplePaginate
方法时,你会收到一个 paginator 实例。当调用 paginate 方法时,你会收到 Illuminate\Pagination\LengthAwarePaginator
的实例,而当你调用 simplePaginate
方法时,你会收到 Illuminate\Pagination\Paginator
的实例。这些实例/对象附带了几种解释结果集的方法。此外,除了这些辅助方法之外,paginator 实例还是迭代器,可以作为数组循环。
收到结果后,你可以使用刀片轻松呈现页面链接
<div class="container">
@foreach ($users as $user)
{{ $user->name }}
@endforeach
</div>
{{ $users->links() }}
links
方法将自动呈现指向结果集中其他页面的链接。这些链接中的每一个都将包含特定的页码,即 ?page
查询字符串变量。links 方法生成的 HTML 与 Bootstrap CSS 框架完全兼容。