3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Laravel キーワード検索機能

Posted at

Laravelで検索機能を実装したので備忘録として残しておきます。

やりたいこと

投稿機能を作成して投稿した内容を部分一致検索で検索をかける。

テーブル

  • id
  • titiel: 投稿のタイトル
  • body: 投稿の内容

手順

1.ルーティングの作成
2.検索フォームを作成
3. 検索機能実装

2.検索フォームの作成

viewでグリッドシステムを使用してフォームを作成します。

    <div class="post-search-form col-md-6">
    <form class="form-inline" action="{{ route('post.index') }}">
        <div class="form-group">
            <input type="text" name="key"  class="form-control" placeholder="キーワードを入力">
        </div>
      <input type="submit" value="検索" class="btn btn-info">
    </form>
    </div>

3.検索機能の実装

Controlloerで受け取ったキーワードを元に部分一致する投稿の抽出。

    public function index(Request $request)
    {
        $key = $request->key;

        $query = Post::query();
        
        if (!empty($key)) {
            $query->where('title', 'like', '%' . $key . '%')->orWhere('body', 'like', '%' . $key . '%');
        }

        $posts = $query->orderBy('created_at', 'desc')->paginate(10);
        return view('posts.index', compact('posts'));
    }

手順

  • キーワードの受け取り
  • キーワードがあればsql文のlikeを使用して部分一致で一致する投稿の抽出
  • 取得した内容をviewへ送る

検索のキーワードをなしにして送ると全件抽出されます。

参考サイト

検索機能の作成
SQL like 前方一致、あいまい検索、エスケープ

3
1
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
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?