Laravel 框架提供了两种分页方式:手动分页和自动分页。它们之间的主要区别在于如何处理数据和生成分页链接。
手动分页的工作原理:
Illuminate\Pagination\LengthAwarePaginator
或 Illuminate\Pagination\Paginator
类创建一个分页实例。示例代码:
use Illuminate\Pagination\LengthAwarePaginator;
// 获取当前页数
$page = request()->input('page', 1);
// 每页显示的数据量
$perPage = 10;
// 查询数据库以获取当前页的数据
$offset = ($page - 1) * $perPage;
$items = DB::table('your_table')->skip($offset)->take($perPage)->get();
// 获取总记录数
$total = DB::table('your_table')->count();
// 创建分页实例
$paginator = new LengthAwarePaginator($items, $total, $perPage, $page, [
'path' => LengthAwarePaginator::resolveCurrentPath(),
]);
// 将分页实例传递给视图
return view('your_view', ['items' => $paginator]);
paginate
方法来获取分页数据。自动分页的工作原理:
paginate
方法。示例代码:
// 在控制器中获取分页数据
$items = YourModel::paginate(10);
// 将分页数据传递给视图
return view('your_view', ['items' => $items]);
总结: