You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel自定义查询实现分页后如何在前端页面渲染使用

Laravel博客列表分页数据前端渲染方案

控制器层优化(推荐)

你当前手动计算偏移量的实现可以直接替换为Laravel内置的分页方法,无需手动处理page参数、计算offset,系统会自动完成这些逻辑,同时自动携带分页所需的所有元数据:

// 博客列表页方法
public function blogs(Request $request)
{
    // 每页展示10条,自动筛选状态为1的已发布博客,自动读取请求page参数计算偏移
    $blogs = Blog::where('status', 1)->paginate(10);
    // 传数据到前端视图,compact写法和之前数组传参效果一致
    return view('frontend.blog', compact('blogs'));
}

如果坚持使用原有手动offset+limit的查询逻辑,需要额外查询数据总条数、计算总页数、手动处理分页参数合法性校验,实现成本更高,无特殊需求不建议使用。

前端Blade模板渲染列表

控制器传递到视图的$blogs变量可以直接在resources/views/frontend/blog.blade.php模板中遍历渲染,支持直接调用模型字段、做空状态判断:

<div class="blog-container">
    <!-- 博客列表遍历 -->
    <div class="blog-list">
        @foreach($blogs as $blog)
        <div class="blog-card">
            <h2 class="blog-title">{{ $blog->title }}</h2>
            <div class="blog-info">
                <span>发布时间:{{ $blog->created_at->format('Y-m-d') }}</span>
                <span>浏览量:{{ $blog->view_count }}</span>
            </div>
            <div class="blog-summary">{{ $blog->summary }}</div>
            <a href="{{ route('blog.detail', ['id' => $blog->id]) }}" class="detail-link">查看详情</a>
        </div>
        @endforeach
    </div>

    <!-- 空数据提示 -->
    @if($blogs->isEmpty())
    <div class="no-data">当前暂无已发布的博客内容</div>
    @endif
</div>

分页导航渲染

使用内置paginate()方法查询的数据,不需要手动编写分页HTML,直接调用分页方法即可自动生成带页码跳转的导航,默认适配Bootstrap样式:

<div class="pagination-wrapper">
    {{ $blogs->links() }}
</div>

如果使用手动实现的分页逻辑,需要自行将总页数、当前页码等参数传到前端,拼接page参数生成分页链接,同时要注意:

  • 校验page参数合法性:page小于1时默认取1,page大于总页数时返回最后一页数据
  • 分页跳转链接需要保留当前请求携带的其他筛选参数(如分类id、搜索关键词等)

内容的提问来源于stack exchange,提问作者Ravi Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 15:33:19