Laravelでの文字列の大文字小文字を区別せずに検索する方法


  1. Laravelのクエリビルダを使用した大文字小文字を区別しない検索:
$keyword = 'laravel';
$results = DB::table('table_name')
    ->whereRaw('LOWER(column_name) LIKE ?', ['%' . strtolower($keyword) . '%'])
    ->get();

上記の例では、table_nameというテーブルのcolumn_nameという列を大文字小文字を区別せずに検索しています。LOWER関数を使用して列の値と検索キーワードを小文字に変換してから、LIKE演算子を使用して部分一致を行っています。

  1. Eloquentモデルを使用した大文字小文字を区別しない検索:
$keyword = 'laravel';
$results = YourModel::whereRaw('LOWER(column_name) LIKE ?', ['%' . strtolower($keyword) . '%'])
    ->get();

上記の例では、YourModelというEloquentモデルを使用して大文字小文字を区別せずに検索しています。クエリの構文は前の例と同じですが、YourModelは自分のモデル名に置き換えて使用してください。

  1. Laravel Scoutを使用した大文字小文字を区別しない検索:
$keyword = 'laravel';
$results = YourModel::search($keyword)
    ->rule(function ($builder) {
        return $builder->whereRaw('LOWER(column_name) LIKE ?', ['%' . strtolower($this->builder->query) . '%']);
    })
    ->get();
は自分のモデル名に置き換えて使用してください。searchメソッドを使用してキーワードを検索し、ruleメソッドを使用してクエリのカスタムルールを定義しています。

これらの方法を使用することで、Laravelで大文字小文字を区別せずに文字列を検索することができます。適切な方法を選択し、プロジェクトの要件に応じて適用してください。