Laravel 5.7:生のSQLを利用してページネーション
Laravel 5.7:生のSQLを利用してページネーション
クエリビルダーでページネーションをするサンプルは多いが、
生のSQLからページネーションをする例は少なかったため記載
環境
現象
クエリビルダーからはpaginateを呼ぶことができるが、
DB::selectは、結果がarrayなのでpaginateが呼べない。
$perPage = 50; $rawQuery = " select hoge from table_a"; $result = \DB::select(\DB::raw("{$rawQuery}")); // ⇒結果がarrayなので、paginateは呼べない
対応
副問い合わせの形でクエリビルダに入れ込んだ。
$perPage = 50; $rawQuery = " select hoge from table_a"; $result = \DB::table(\DB::raw("({$rawQuery}) as alias")) ->select("hoge") ->paginate($perPage);
結果の表示
<div> <form> {{-- 検索条件 --}} </form> </div> <div> @if(!empty($results)) <div> @foreach($results as $row) <div>{{ $row->hoge }}</div> @endforeach </div> <div> {{ $results->appends($_GET)->links() }} </div> @endif </div>