前提・実現したいこと
検索結果と検索フォームを同一ページに表示したいです。
発生している問題・エラーメッセージ
URLがhttp://127.0.0.1:8000/booksのときに検索すると問題なく結果が表示されます。
ですが、検索条件に当てはまる10件未満のデータは実際には存在していて、URLがhttp://127.0.0.1:8000/books?page=2のときに検索すると結果が得られません。データはありませんと表示されているだけになってしまいます。
該当のソースコード
// コントローラー public function index() { $datas = Book::paginate(10); return view('books.index', ['datas' => $datas]); } // 本を検索 public function search(Request $request) { $datas = Book::where('title', 'like', "%$request->title%")->paginate(10); return view('books.index', ['datas' => $datas]); }
// ビュー @extends('layouts.app') @section('title', '本一覧') @section('content') <form action="" method="post"> @csrf <input name="title" type="text"> <input type="submit" value="検索する"> </form> <br> @if(count($datas) != 0) @foreach($datas as $data) <a class="main_link"><a href="/books/edit/{{ $data->id }}" >{{ $data->title }}</a></a> @endforeach {{ $datas->links('components.pagination') }} @else データはありません @endif @endsection
// ルート Route::get('/books', [BookController::class, 'index']); Route::post('/books', [BookController::class, 'search']);
試したこと
public function redirection() {
return redirect('books');
}
// 本を検索 public function search(Request $request) { $this->redirection(); $datas = Book::where('title', 'like', "%$request->title%")->paginate(10); return view('books.index')->with(['datas' => $datas]); }
クエリに?pageがついているのでそれを除けば1ページ目に戻って検索結果が表示されると思いredirect処理をはさみましたがpageは除けませんでした。
補足情報(FW/ツールのバージョンなど)
Laravel 8.49.2
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。