Lors de la recherche d'enregistrements de base de données à l'aide de l'ORM éloquent de Laravel 5, la méthode Where peut être utilisée avec l'opérateur LIKE pour effectuer des comparaisons insensibles à la casse. Cependant, la syntaxe de cet opérateur dans Laravel diffère de la syntaxe SQL LIKE standard.
Question :
Un développeur tente d'exécuter la requête suivante à l'aide d'Eloquent de Laravel 5. ORM :
BookingDates::where('email', Input::get('email'))->orWhere('name', 'like', Input::get('name'))->get()
Cependant, aucun résultat n'est renvoyé. Le développeur ne sait pas pourquoi la clause orWhereLike ne correspond à aucun résultat.
Réponse :
La syntaxe orWhereLike accepte deux arguments : le nom de la colonne à rechercher et le nom de la recherche. terme. Dans ce cas, la colonne de nom recherche une valeur qui contient l'entrée utilisateur spécifiée par Input::get('name').
Cependant, le code fourni utilise la méthode orWhere, pas la méthode orWhereLike. . Pour effectuer une recherche insensible à la casse à l'aide de LIKE, la syntaxe correcte est :
orWhere('name', 'like', '%' . Input::get('name') . '%')
Ce code produira l'instruction MySQL suivante :
SELECT * FROM booking_dates WHERE email='[email protected]' OR name LIKE '%John%'
En utilisant les signes de pourcentage (%) dans le terme de recherche, la requête correspondra à tous les enregistrements dont la colonne de nom contient la chaîne spécifiée, quelle que soit sa position dans la valeur de la colonne.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!