数据库:分页
简介
在其他框架中,分页可能非常痛苦。我们希望 Laravel 的分页方法能让你耳目一新。Laravel 的分页器与查询构建器和 Eloquent ORM 集成,并提供了方便、易于使用的数据库记录分页功能,无需任何配置。
默认情况下,分页器生成的 HTML 与 Tailwind CSS 框架兼容;但是,Bootstrap 分页支持也可用。
Tailwind
如果你使用 Laravel 的默认 Tailwind 分页视图与 Tailwind 4.x,你的应用程序的 resources/css/app.css 文件将已经正确配置为 @source Laravel 的分页视图:
@import 'tailwindcss';
@source '../../vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php';基本用法
分页查询构建器结果
有几种方法可以分页项目。最简单的方法是在查询构建器或 Eloquent 查询上使用 paginate 方法。paginate 方法根据用户当前查看的页面自动处理设置查询的「limit」和「offset」。默认情况下,当前页面由 HTTP 请求上的 page 查询字符串参数的值检测。此值由 Laravel 自动检测,并自动插入到分页器生成的链接中。
在此示例中,传递给 paginate 方法的唯一参数是你希望「每页」显示的项目数。在这种情况下,让我们指定我们希望每页显示 15 个项目:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
use Illuminate\View\View;
class UserController extends Controller
{
/**
* 显示所有应用程序用户。
*/
public function index(): View
{
return view('user.index', [
'users' => DB::table('users')->paginate(15)
]);
}
}简单分页
paginate 方法在从数据库检索记录之前计算查询匹配的记录总数。这样做是为了让分页器知道总共有多少页记录。但是,如果你不计划在应用程序的 UI 中显示总页数,那么记录计数查询是不必要的。
因此,如果你只需要在应用程序的 UI 中显示简单的「下一页」和「上一页」链接,可以使用 simplePaginate 方法执行单个、高效的查询:
$users = DB::table('users')->simplePaginate(15);分页 Eloquent 结果
你也可以分页 Eloquent 查询。在此示例中,我们将分页 App\Models\User 模型并指示我们计划每页显示 15 条记录。如你所见,语法与分页查询构建器结果几乎相同:
use App\Models\User;
$users = User::paginate(15);当然,你可以在查询上设置其他约束后调用 paginate 方法,例如 where 子句:
$users = User::where('votes', '>', 100)->paginate(15);你也可以在分页 Eloquent 模型时使用 simplePaginate 方法:
$users = User::where('votes', '>', 100)->simplePaginate(15);