🚀

テーブル内のデータを連結してLIKE検索する(Laravel)

2021/06/25に公開

今回は、 データベース内に「姓」と「名」を分けて格納している場合の、 名前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