- 投稿日:2019-05-29T12:24:43+09:00
Laravel(Eloquent)でLIKE検索で濁点/半濁点を区別したい→LIKE BINARYを使う
確認環境
・laravel v5.7.28
・MySQL 8.0
・PHP 7.3.0MySQLのLIKEでは濁点/半濁点の区別を行いません。大文字と小文字の区別もしません。
厳密に一致させるときは、LIKE BINARY
をつかいます。ふつうのSQLではこう。
SELECT * FROM user WHERE name LIKE BINARY '%やまだ%;Eloquentではこうやります。
$user->where('name','LIKE BINARY','%やまだ%');以前はサポートされていなかったようですが
どこかのタイミングで修正されました。
https://github.com/laravel/framework/commit/76f6da4dab1e9e4847362a2b2b0c428e25805f0c#diff-cc3d43e01028390141596ae0da939930サポートされていないバージョンを使用していて、アップデートはできないよという場合は
上記コミットと同じようにコードを修正すればOKです。(自己責任)