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

Laravel博客某分类分页始终显示第一页问题求助

问题分析与解决方案

你的orientation分类分页异常,核心是代码里的重复查询+数据与分页实例脱节导致的:

  • 你分别用get()->take(6)和paginate(6)做了两次独立查询,$articles永远只取前6条数据,完全不响应分页的page参数;
  • 虽然$links是正确的分页实例,但它和展示的$articles没有关联,导致分页控件无法正确识别当前页码,始终显示第一页。

修复步骤

1. 简化控制器代码,复用分页实例

直接用paginate()返回的对象同时处理数据展示和分页链接,不需要分开查询:

$page = Categoriepage::where('identifiant', 'orientation')->first();
$idArticle = Articleliaison::where('idPage', $page->id)->pluck('idArticle');

// 直接生成分页实例,自动处理page参数
$articles = Article::whereIn('id', $idArticle)
    ->where('status', 'enable')
    ->orderBy('created_at', 'desc')
    ->paginate(6);

return View::make('pages.orientation')->with('articles', $articles);

2. 更新视图代码,绑定分页实例

把分页链接的调用改成从$articles实例获取,确保数据和分页状态一致:

<?php $i = 1 ?>
<div class="masonry ">
@foreach($articles as $article)
    @include('components.article-or')
    <?php $i++ ?>
@endforeach
</div>
<div class="text-center" style="margin-top: 5%">
    {{ $articles->links() }}
</div>

额外优化:避免重复查询与N+1问题

如果你的模型已经定义了关联关系(比如Categoriepage关联Articleliaison,Articleliaison关联Article),可以用关联查询简化代码并提升性能:

// 预加载关联数据,避免多次查询
$page = Categoriepage::with(['articleliaisons.article' => function ($query) {
    $query->where('status', 'enable')->orderBy('created_at', 'desc');
}])->where('identifiant', 'orientation')->first();

// 对关联的文章进行分页
$articles = $page->articleliaisons->pluck('article')->paginate(6);

这样修改后,分页控件会正确识别当前页码,点击后也会加载对应页的文章数据,解决你遇到的问题。

内容的提问来源于stack exchange,提问作者Youssef Boudaya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 13:52:31