Laravelでランキング画面をページネーションしたときの順位表示方法

PHP Laravel 情報

問題
拡張foreachのkeyを取得しただけだと、ページネーションして次の画面に行ったときに順位が引き継がれず1位から始まってしまう(例えば本当は11位なのに)。

目標
ページ数*10+keyとかでもうまく表示はできると思うけど、今回はページ数を取得する方法よりスマートだと思える方法を考えてみた。

方法

          <h4>表示回数ランキング</h4>
          <table class="hover">
            <thead>
              <tr>
                <th>順位</th>
                <th>タイトル</th>
                <th>表示回数</th>
                <th>ユーザー名</th>
              </tr>
            </thead>
            <tbody>
              @foreach ($posts as $post_key => $post)
                  <tr>
                    <td>{{$posts->firstItem()+$post_key}}</td>
                    <td>{{$post->title}}</td>
                    <td>{{$post->pv}}</td>
                    <td>{{$post->user->name}}</td>
                  </tr>
              @endforeach
            </tbody>
          </table>
$posts->firstItem()+$post_key

この記述はページネーションのペジネータインスタンスメソッドを使っている。
firstItem()は現在表示中の画面の最初のデータがトータル中の何件目かを表しているのであろう。
+$post_keyでは配列の何番目かが入ってる。1個めなら0。
もしも10ページごとのページネーションで2ページ目の最初の投稿なら11+0で11位と表示される。はず。

参考サイト
https://readouble.com/laravel/5.5/ja/pagination.html

anonymous / 2018-05-06 / 289 / 0
このエントリーをはてなブックマークに追加
関連記事

まだコメントがついていません。

ログイン不要でコメントの投稿ができます。