検索機能を実装しているとき、全角半角等を無視して検索したくなった。
諸事情でデフォルトのcollateはutf8_general_ci。
普通にsqlを書くなら、
select * from items where name collate utf8_unicode_ci like '%ホゲホゲ%';
で良いけれど、Laravelのwhere句ではcollateを指定できない。
複雑なことを色々やっている人がいたけれど、一番手っ取り早いのは
where('items', 'like', '%'.$word.'%');
を
whereRaw('items collate utf8_unicode_ci like ?', ['%'.$word.'%'])';
と書けばOK。
コメント