【问题标题】:Why Laravel pagination show same page?为什么 Laravel 分页显示同一页面?
【发布时间】:2020-01-30 10:18:52
【问题描述】:

我的 laravel 中有一个包含多个类别的博客模块。在其他类别中分页工作得很好,但使用此类别方法 links() 总是显示第一页。这是我的代码:

  $page = Categoriepage::where('identifiant', 'orientation')->first();

    $idArticle = Articleliaison::select(array('idArticle'))->where('idPage',$page->id)->pluck('idArticle');

    $articles = Article::whereIn('id',$idArticle)->where('status','enable')->orderby('created_at','desc')->get()->take(6);

    $links = Article::whereIn('id',$idArticle)->where('status','enable')->orderby('created_at','desc')->paginate(6);

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

在我看来:

  <?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%">

                    {{ $links->links() }}

                </div>

【问题讨论】:

  • {{ $links-&gt;links() }} 这应该是{{ $articles-&gt;links() }}

标签: php laravel


【解决方案1】:

您总是选择前 6 篇文章,因为显示的文章来自:

$articles = Article::whereIn('id',$idArticle)->where('status','enable')->orderby('created_at','desc')->get()->take(6);

而不是来自分页请求。

没有必要将链接查询和实际文章查询分开。而不是:

$articles = Article::whereIn('id',$idArticle)->where('status','enable')->orderby('created_at','desc')->get()->take(6);
$links = Article::whereIn('id',$idArticle)->where('status','enable')->orderby('created_at','desc')->paginate(6);

你可以这样做:

$articles = Article::whereIn('id',$idArticle)->where('status','enable')->orderby('created_at','desc')->paginate(6);

在你看来:

<div class="masonry ">
   @foreach($articles as $article)
     @include('components.article-or')
    @endforeach
</div>

<div class="text-center" style="margin-top: 5%">
  {{ $articles->links() }}
</div>             

【讨论】:

    【解决方案2】:

    我认为你把这个搞混了。

    您检索所有文章 (-&gt;get()) 并获取前六篇文章 (-&gt;take(6))。然后使用-&gt;paginator(6) 检索$links

    这可以而且应该全部使用 -&gt;paginator(6) 来完成,这样 Laravel 会为您所在的 ?page=X 检索正确的 6 文章,并根据查询找到的文章总数呈现链接.

    试试这样:

    $page = Categoriepage::where('identifiant', 'orientation')->first();
    
    $idArticle = Articleliaison::select(array('idArticle'))->where('idPage',$page->id)->pluck('idArticle');
    
    $articles = Article::whereIn('id',$idArticle)->where('status','enable')->orderby('created_at','desc')->paginate(6);
    
    return View::make('pages.orientation')->with('articles',$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>
    

    【讨论】:

      【解决方案3】:

      你不必提出两个请求,而只需一个

       $page = Categoriepage::where('identifiant', 'orientation')->first();
      
      $idArticle = Articleliaison::select(array('idArticle'))->where('idPage',$page->id)->pluck('idArticle');
      
      $articles = Article::whereIn('id',$idArticle)->where('status','enable')->orderby('created_at','desc')->paginate(6);
      
      
      return View::make('pages.orientation')->with('articles',$articles);
      

      在你看来。

                   <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>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-07
        • 2020-05-27
        相关资源
        最近更新 更多