検索機能を作る際には、検索方法によってSQLの書き方が変わります。
今回は、PHPやLaravelでよく使う4つの検索方法を紹介します。
入力した値と完全に一致するデータを検索します。
SELECT * FROM users
WHERE name = '山田太郎';
Laravelでは次のように記述します。
User::where('name', $keyword)->get();
入力した文字列を含むデータを検索します。
SELECT * FROM users
WHERE name LIKE '%山田%';
Laravel
User::where('name', 'like', "%{$keyword}%")->get();
入力した文字列で始まるデータを検索します。
SELECT * FROM users
WHERE name LIKE '山田%';
Laravel
User::where('name', 'like', "{$keyword}%")->get();
入力した文字列で終わるデータを検索します。
SELECT * FROM users
WHERE name LIKE '%太郎';
Laravel
User::where('name', 'like', "%{$keyword}")->get();
検索方法による違いは次のとおりです。
| 検索方法 | SQL |
|---|---|
| 完全一致 | = |
| 部分一致 | LIKE '%文字%' |
| 前方一致 | LIKE '文字%' |
| 後方一致 | LIKE '%文字' |
検索機能では、LIKEと%(ワイルドカード)を組み合わせることで、さまざまな検索方法を実現できます。名前や商品名の検索では部分一致、IDやメールアドレスなど正確な値を検索する場合は完全一致を使うのが一般的です。