画像タイトルとハッシュタグからあいまい検索したい
こういうテーブルがある
画像テーブルとハッシュタグテーブルがあり、それを中間テーブルがつないでいる。
多対多の関係である。
自由入力の検索フォームがあって、画像タイトルとハッシュタグからあいまい検索ができるようにしたい
(例えば『あ』と検索すれば『からあげ』というタイトルの画像と『#めぐりあい』というハッシュタグのつけられた画像が出てくる)。
これでいいのか
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
で宣言しないとエラーになる。
一応これで望んだ結果は得られるが、どうも複雑すぎる気がする。
もっとカンタンにできないものでしょうか🤔
あとこれにユーザー名も検索対象に追加しようと考えるとどうすればいいのかもわからなかった。