豌豆Ai站群搜索引擎系统 V.25.10.25 网址:www.wd.chat

🗣 Wd提问: php分页laravel

🤖 Ai回答:
在 Laravel 中,PHP 分页是一个非常常见且强大的功能。Laravel 提供了内置的分页支持,可以轻松地对数据库查询结果进行分页处理。以下是使用 Laravel 实现分页的详细说明。

✅ 1、基本分页(使用 Eloquent 模型)

假设你有一个 `Post` 模型,你想对文章进行分页显示。

示例:获取每页 10 条数据

php
// 在控制器中
public function index()
{
$posts = Post::paginate(10); // 每页 10 条记录

return view('posts.index', compact('posts'));
}

在 Blade 模板中渲染分页链接

blade
{{ posts/index.blade.php }}
<table
@foreach($posts as $post)
<tr
<td{{ $post-title }}</td
<td{{ $post-content }}</td
</tr
@endforeach
</table

{{ $posts-links() }} {{ 渲染分页链接 }}

`{{ $posts-links() }}` 会自动渲染默认的 Bootstrap 风格的分页按钮。

✅ 2、自定义每页数量

你可以通过 URL 参数或表单传入每页数量:

php
public function index(Request $request)
{
$perPage = $request-input('per_page', 10); // 默认每页 10 条
$posts = Post::paginate($perPage);

return view('posts.index', compact('posts'));
}

然后在页面上添加一个下拉菜单选择每页数量:

blade
<form method=GET
<select name=per_page onchange=this.form.submit()
<option value=5 {{ request('per_page') == '5' ? 'selected' : '' }}5</option
<option value=10 {{ request('per_page') == '10' ? 'selected' : '' }}10</option
<option value=20 {{ request('per_page') == '20' ? 'selected' : '' }}20</option
</select
</form

✅ 3、简单分页(SimplePaginate)

如果你只需要“上一页”和“下一页”,不需要显示所有页码,可以用 `simplePaginate()`:

php
$posts = Post::simplePaginate(10);

它比 `paginate()` 更轻量,只返回当前页、前一页、后一页的信息。

✅ 4、手动设置分页参数(如页码、路径等)

php
$posts = Post::paginate(10, ['*'], 'page', $request-input('page', 1));

或者指定自定义分页路径:

php
$posts = Post::paginate(10)-appends(['category' = $category]);

这会在分页链接中保留其他查询参数,例如:

/posts?page=2&category=laravel

✅ 5、分页数据信息

你可以访问分页对象的属性来获取更多信息:

blade
<p当前页: {{ $posts-currentPage() }}</p
<p总页数: {{ $posts-lastPage() }}</p
<p总记录数: {{ $posts-total() }}</p
<p每页数量: {{ $posts-perPage() }}</p
<p当前页数据: {{ $posts-count() }}</p

✅ 6、自定义分页视图

Laravel 支持自定义分页视图。例如,创建一个自定义的分页样式:

blade
{{ resources/views/vendor/pagination/bootstrap-4.blade.php }}
<nav
<ul class=pagination
@if ($paginator-onFirstPage())
<li class=page-item disabled
<span class=page-link&laquo;</span
</li
@else
<li class=page-item
<a class=page-link href={{ $paginator-previousPageUrl() }}&laquo;</a
</li
@endif

@foreach ($paginator-getUrlRange(1, $paginator-lastPage()) as $page = $url)
<li class=page-item {{ $page == $paginator-currentPage() ? 'active' : '' }}
<a class=page-link href={{ $url }}{{ $page }}</a
</li
@endforeach

@if ($paginator-hasMorePages())
<li class=page-item
<a class=page-link href={{ $paginator-nextPageUrl() }}&raquo;</a
</li
@else
<li class=page-item disabled
<span class=page-link&raquo;</span
</li
@endif
</ul
</nav

也可以使用 `vendor:publish` 发布分页视图:

bash
php artisan vendor:publish tag=laravel-pagination


✅ 7、使用 API 分页(JSON 返回)

如果是在 API 中使用,可以返回 JSON 格式的分页数据:

php
return response()-json([
'data' = $posts,
'meta' = [
'current_page' = $posts-currentPage(),
'from' = $posts-firstItem(),
'to' = $posts-lastItem(),
'per_page' = $posts-perPage(),
'total' = $posts-total(),
'last_page' = $posts-lastPage(),
'path' = $posts-path(),
]
]);

或者直接返回:

php
return $posts;

Laravel 会自动将分页对象转换为 JSON。

✅ 总结

| 方法 | 用途 |

| `paginate()` | 完整分页,包含所有页码 |
| `simplePaginate()` | 只有前后页,性能更好 |
| `appends()` | 添加额外参数到分页链接 |
| `links()` | 渲染分页链接 |
| `currentPage()` / `lastPage()` 等 | 获取分页信息 |

📚 参考文档

[Laravel Pagination Docs](https://laravel.com/docs/pagination)

如果你有具体需求,比如:
自定义分页样式
AJAX 分页
多条件搜索 + 分页
分页数据导出

欢迎继续提问!

Ai作答

📣 商家广告


广告招商

广告招商

广告招商

看相

贵阳用友软件


0

IP地址: 27.99.163.6

搜索次数: 104

提问时间: 2025-11-08 14:03:16

🛒 域名购买

❓️ 热门提问

🌐 域名评估

最新挖掘

🖌 热门作画

🤝 关于我们

🗨 加入群聊

🔗 友情链接

🧰 站长工具
📢

温馨提示

本站所有 问答 均由Ai自动分析整理,内容仅供参考,若有误差请用“联系”里面信息通知我们人工修改或删除。

👉

技术支持

本站由 🟢 豌豆Ai 提供技术支持,使用的最新版: 豌豆Ai站群搜索引擎系统 V.25.10.25 搭建本站。

上一篇 78965 78966 78967 下一篇