Eloquentを使用してクエリを実行しようとしていますが、$ vars ['language']は小文字ですが、language列は必ずしも小文字ではありません。雄弁な言葉を使用してこの検索を実行するにはどうすればよいですか?
Item::where('language', $vars['language'])
私はこれを行う方法をどこにも見つけることができなくても、私がしたいのはこれです
Item::where('LOWER(language)', $vars['language'])
両方が小文字になり、一致させることができます。
WhereRawを パラメータバインディング とともに使用して、whereRawステートメントをサニタイズします。
$term = strtolower($vars['language']);
Item::whereRaw('lower(language) like (?)',["%{$term}%"])->get();
前の回答一部のデータベースでは、場所で演算子ilike
を使用できます。例えば
Item::where('language', 'ilike', $vars['language'])->get();
使用可能なすべての演算子は次のとおりです。
protected $operators = array(
'=', '<', '>', '<=', '>=', '<>', '!=',
'like', 'not like', 'between', 'ilike',
'&', '|', '^', '<<', '>>',
);
編集:ilike
は大文字と小文字を区別しませんlike
。
this post によると、これを解決するdbに依存しない方法は次のようになります。
Item::whereRaw('LOWER(language) = ?', [$vars['language']])->get();