Laravel - Modèle de Requêtes si les valeurs contenir une certaine chaîne de caractères (prises à partir de la recherche de l'entrée)
Je me suis mise en œuvre d'une recherche à l'aide de Laravel et Ajax. J'ai donc un Produit qui appartient à un Tag et une sous-catégorie. D'autre part la sous-catégorie appartenant à une Catégorie. Je veux vérifier l'ensemble de leurs propriétés (valeurs de champ) et de vérifier si elles contiennent la chaîne de caractères. Avec quelques recherches, j'ai découvert que je dois utiliser LIKE
. Voici ce que j'ai essayé:
$products = Product::where('name_en', 'LIKE', $search)->get();
Toutefois cela permet d'obtenir des produits si la chaîne de recherche correspond exactement à la valeur. Je veux correspondre si elle contient. Comment puis-je procéder à l'belongsTo relations? Comment puis-je vérifier les propriétés sans de Tag et de la sous-catégorie? Comment la chaîne de tout le monde, donc, je obtenir le résultat souhaité? Merci à l'avance.
OriginalL'auteur Codearts | 2016-07-28
Vous devez vous connecter pour publier un commentaire.
vous faites une mauvaise chose, votre requête retourne les correspondances exactes parce que vous avez donné à la chaîne de caractères exacte. Mais votre requête devrait ressembler à ceci.
Au-dessus de requête donne à vos produits qui contient la chaîne recherchée.
Et si vous voulez la recherche dans des tables relationnelles, alors vous pouvez l'utilisateur laravel méthode
join()
. Mais il y a une méthode pluswhereHas
mais j'ai toujours éviter cette méthode, car il crée une requête très complexe. ce qui est très lourd. Ainsi, vous pouvez utiliserjoin()
méthode qui va ajouterinner join
avec table relationnelle.Voici l'exemple de jointure:
C'est l'exemple de base, vous pouvez utiliser cette fonction de votre exigence.
mise à jour d'un exemple, je pense que cela va vous aider. et aussi voter cette réponse si utile 🙂
OriginalL'auteur Lakhwinder Singh
À ajouter à Lakhwinder Singh’s réponse, il pourrait être la peine de l'emballer dans un champ que vous pouvez appliquer à votre modèle:
Vous pouvez ensuite utiliser ce champ comme ceci:
Ce qui signifie que vous n'avez pas à garder d'ajouter manuellement “COMME” conditions tout au long de votre application.
En aparté, Laravel est l'introduction de Scout, un pilote de base de recherche de texte intégral extension pour Éloquent, dans la version 5.3.
OriginalL'auteur Martin Bean
Ce que vous voulez, c'est écrire une requête avancée pour la recherche de produits basés sur des modèles trop, de sorte que les suggestions précédentes par d'autres, vous devez écrire les instructions join.
Vérifier mon exemple de code ci-dessous, qui est écrite à la recherche de membres, la chaîne de recherche va également amener des membres si la chaîne correspond à, les membres des compétences ou des positions, donc ce sera sûrement vous aider.
Note la jointure suivante dans le code ci-dessus, qui est, dans votre cas, la catégorie et la sous-catégorie
OriginalL'auteur Akram Wahid