Laravelで検索機能を実装する方法


以下のようなイメージ。

  • キーワードは検索フォームに入力し、検索ボタンを押して実行
  • キーワードを含むレコードをデータベースから検索し、ページに表示する
  • URLクエリパラメータにキーワードを入れる
    (https://example.com/?keyword=検索フォームに入力された文字列)

ソースコード

routes/web.php


Route::resource('/', 'PostController');
app/Http/Controllers/PostController.php



use App\Post;

public function index(Request $request) {
    // キーワード取得
    $keyword = $request->input('keyword', ''); // デフォルトは空文字

    //キーワード検索
    $posts = Post::where('title', 'LIKE' , "%{$keyword}%")->get()->all();

    // ページ更新時にクエリパラメータが消えないようにkeywordも渡す
    $params = array('posts'   => $posts,
                    'keyword' => $keyword)
    return view('/index', $params);
}
resources/views/index.blade.php



    
    
@foreach(@posts as @post) @endforeach

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です