J'essaie d'exécuter une requête en utilisant Eloquent $ vars ['langue'] est en minuscules mais la colonne de langue n'est pas nécessairement en minuscules. Comment puis-je faire cette recherche en utilisant éloquent mais avoir toujours les minuscules dans la requête
Item::where('language', $vars['language'])
Ce que je veux faire c'est ça même si je ne trouve nulle part comment faire ça
Item::where('LOWER(language)', $vars['language'])
afin qu'ils soient tous les deux en minuscules et que je puisse les faire correspondre.
Utilisez whereRaw avec paramètre binding pour assainir votre instruction whereRaw:
$term = strtolower($vars['language']);
Item::whereRaw('lower(language) like (?)',["%{$term}%"])->get();
Réponse précédente Dans certaines bases de données, vous pouvez utiliser l'opérateur ilike
dans votre where. Par exemple
Item::where('language', 'ilike', $vars['language'])->get();
Tous les opérateurs disponibles sont:
protected $operators = array(
'=', '<', '>', '<=', '>=', '<>', '!=',
'like', 'not like', 'between', 'ilike',
'&', '|', '^', '<<', '>>',
);
Modifier: ilike
ne respecte pas la casse like
.
Selon cet article , un moyen indépendant de la base de données pour résoudre ce problème serait:
Item::whereRaw('LOWER(language) = ?', [$vars['language']])->get();