Incorporation de sous-requêtes dans les requêtes Laravel : une sous-requête WHERE IN Exemple
Lorsque vous traitez des requêtes de base de données complexes, les sous-requêtes offrent un moyen puissant de récupérer des données à partir de plusieurs tableaux ou filtrer les résultats en fonction de calculs. Laravel, un framework PHP populaire, fournit une interface facile à utiliser pour travailler avec des sous-requêtes.
Problème :
Vous devez créer une requête dans Laravel qui extrait données de la table "products" à l'aide d'une sous-requête pour filtrer en fonction des valeurs de la table "product_category". Plus précisément, vous souhaitez inclure des lignes qui satisfont aux critères suivants :
- "id" de la table "products" doit apparaître dans la colonne "product_id" de la table "product_category".
- Les valeurs d'ID de catégorie sont « 223 » ou « 15 » dans la table « product_category ».
- colonne « active » dans la La table "products" est définie sur 1.
Solution :
Pour y parvenir, Laravel fournit un moyen flexible d'incorporer des sous-requêtes dans vos requêtes à l'aide de fermetures :
Products::whereIn('id', function($query){
$query->select('product_id')
->from(with(new ProductCategory)->getTable())
->whereIn('category_id', ['223', '15'])
->where('active', 1);
})
->get();
-
Définition de sous-requête (en Closure):
- function($query) : Une fermeture qui définit la sous-requête.
- $query->select(...) : Spécifie quelle colonne de la sous-requête que vous souhaitez récupérer. Dans ce cas, il s'agit de "product_id".
- from(with(new ProductCategory)->getTable()) : détermine la table à partir de laquelle récupérer les données pour la sous-requête. Il fait référence à la table "product_category".
- ->whereIn('category_id', ['223', '15']) : définit la condition de filtre pour la sous-requête, en limitant les résultats aux lignes où "category_id" est soit '223', soit '15'.
- ->where('active', 1) : ajoute un filtre supplémentaire pour garantir que « actif » est défini sur 1 dans la table « catégorie_produit ».
-
Requête principale :
- whereIn('id', ...) : Il s'agit de la requête principale qui utilise la sous-requête définie dans la fermeture. Il fait correspondre la colonne "id" de la table "products" avec "product_id" dans les résultats de la sous-requête.
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!
Déclaration:Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn