🚀
テーブル内のデータを連結してLIKE検索する(Laravel)
今回は、 データベース内に「姓」と「名」を分けて格納している場合の、 名前LIKE検索をが実現できたのでその方法を共有したいと思います。
テーブルの中身
users
テーブルの中身はこんな感じを想定しています。
カラム名(英字) | カラム名(日本語) |
---|---|
id | ユーザーID |
last_name | 姓 |
first_name | 名 |
created_at | 作成日 |
updated_at | 更新日 |
姓と名を結合して、名前LIKE検索する
このようにwhereの中にDB::rawを使用することでLIKE検索を実現します。
実際にLIKE検索をしているのは、 if ($nameKeyword)
のif文の中です。
public function getUsers(string $nameKeyword)
{
$query = User::query();
if ($nameKeyword) {
$query->where(DB::raw('CONCAT(first_name, last_name)'), 'like', '%' . $nameKeyword . '%');
}
return $query->get();
}
これで、姓名を結合してからLIKE検索をすることができました!
Discussion