LoginSignup
3
2

More than 3 years have passed since last update.

【Laravel】複数テーブルからあいまい検索をしたい

Last updated at Posted at 2020-11-04

画像タイトルとハッシュタグからあいまい検索したい

こういうテーブルがある

ddcb54066c7b1a424e7ddc913ef509db.png

画像テーブルとハッシュタグテーブルがあり、それを中間テーブルがつないでいる。
多対多の関係である。
自由入力の検索フォームがあって、画像タイトルとハッシュタグからあいまい検索ができるようにしたい
(例えば『あ』と検索すれば『からげ』というタイトルの画像と『#めぐりい』というハッシュタグのつけられた画像が出てくる)。

これでいいのか

ImagesController.php
  $result = Image::whereHas('tags', function($q) use($keyword){
    $q->where('name', 'iLIKE', "%$keyword%");
  })->orWhere(function($q) use($keyword){
    $q->where('title', 'iLIKE', "%$keyword%");
  })->get();
  • iLike を使って大文字と小文字を区別しないようにしている。
  • whereHas において変数を使いたい場合は use で宣言しないとエラーになる。

一応これで望んだ結果は得られるが、どうも複雑すぎる気がする。
もっとカンタンにできないものでしょうか🤔
あとこれにユーザー名も検索対象に追加しようと考えるとどうすればいいのかもわからなかった。

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