0
0

More than 3 years have passed since last update.

Laravel8 ソートとページネーションを組み合わせる

Posted at

前提

下記記事に沿って、投稿記事の並べ替え機能を設定済みであること。

困ったこと

追加でページネーションを設定したところ、並べ替えが維持されるのは1ページ目のみで、2ページ目以降では順番が維持されない。

やりたいこと

ページネーションを設定し、1ページ目で並べ替えた通りに2ページ目以降も表示させる。

コントローラーの変更

すでにkyslik/column-sortableをインストールしてsortableメソッドを使用している。その上でページネーションと組み合わせる場合は、クラス名::sortable()->paginate(数字)とする。

もともと

app/Http/Controllers/RecordController.php
    public function index(){
        $records = Record::sortable()->get(); //変更前
        return view('record.list',['records' => $records]);
    }

変更後(1ページにつき記事を5つ表示する)

app/Http/Controllers/RecordController.php
    public function index(){
        $records = Record::sortable()->paginate(5); //変更後

        return view('record.list',['records' => $records]);
    }

ビューの変更

resources/views/record/list.blade.php
@foreach($records as $record)
    <tr class='text-lg container mx-auto leading-10'>
.
.
.

    </tr>
@endforeach
      </table>
      <div class="inline-flex items-center">
      {{ $records->appends(request()->query())->links() }}
      </div>

単にページネーションを設定するときは{{ $変数名->links() }}とするところを、{{ $変数名->appends(request()->query())->links() }}とすることで、並べ替え内容を2ページ目まで維持することができる。

大いに参考にした記事

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0