Laravelでクエリ文字列を保持したままページネーションを行う方法


以下に、シンプルで簡単な方法といくつかのコード例を示します。

  1. ルートの作成: まず、ルートを作成します。ルートファイル(通常はroutes/web.php)に以下のようなコードを追加します。
Route::get('/posts', 'PostController@index')->name('posts.index');
  1. コントローラーの作成: 次に、PostControllerを作成します。以下のようなコードをコントローラーファイルに追加します。
use Illuminate\Http\Request;
use App\Post;
class PostController extends Controller
{
    public function index(Request $request)
    {
        $query = Post::query();
        // クエリ文字列の処理
        $query->when($request->has('tag'), function ($q) use ($request) {
            return $q->where('tag', $request->input('tag'));
        });
        $posts = $query->paginate(10);
        return view('posts.index', compact('posts'));
    }
}
  1. ビューの作成: 最後に、ビューファイルを作成します。resources/views/posts/index.blade.phpという名前のファイルを作成し、以下のようなコードを追加します。
@foreach ($posts as $post)
    <!-- ブログ投稿の表示 -->
@endforeach
<!-- ページネーションリンクの表示 -->
{{ $posts->appends(request()->query())->links() }}

これで、クエリ文字列が保持されたままページネーションが行われます。ユーザーがタグを選択した場合、選択したタグがクエリ文字列に追加され、適切な結果が表示されます。

以上がLaravelでクエリ文字列を保持したままページネーションを行う方法のシンプルな例です。必要に応じてコードをカスタマイズしてください。