前提・実現したいこと
Laravel5.5でフォームから入力された値を元にユーザーテーブルからユーザーを検索したい。
その際、漢字・カタカナのどちらでも検索でき、かつ半角・全角の空間を無視したい
発生している問題・エラーメッセージ
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.$name."%" or name_kana like "%".$name."%"' at line 1 (SQL: select `name_kana`, `user_name`, `birth_date` from `users` where user_name like "%".$name."%" or name_kana like "%".$name."%")
該当のソースコード
public function search(Request $request){ $name = $request->name; $name_search = DB::table('users') ->select('name_kana','user_name','birth_date') ->whereRaw('user_name like "%".$name."%" or name_kana like "%".$name."%"') ->get(); }
試したこと
現在変数になっているところを「"%ヤマダ%"」とした状態でtoSqlでクエリを出力し、Mysqlで直接実行したところきちんと欲しい結果が返ってきました
select `name_kana`, `user_name`, `birth_date` from `users` where user_name like "%ヤマダ%" or name_kana like "%ヤマダ%";
"%".$name."%"は
'%$name%'
'%'.$name.'%'
ではエラーが出たので現在の形に直しました。曖昧検索で使う%との併用を調べてみましたが、これ以外の書き方が分かりませんでした。ご存知のかたいらっしゃいましたらお教えいただけないでしょうか?よろしくお願いします
補足情報(FW/ツールのバージョンなど)
Lalravel5.5
Mysql mysql Ver 14.14 Distrib 5.7.20,
php 7
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。