Comment utiliser les sous-requêtes dans Laravel pour améliorer les performances
Dans Laravel, les sous-requêtes offrent une approche puissante pour améliorer l'efficacité de certaines requêtes. Lorsque vous devez récupérer des données sur la base des résultats obtenus à partir d'une autre requête, une sous-requête peut être utilisée pour y parvenir. Cette approche s'avère particulièrement utile lorsqu'une opération de jointure est moins adaptée pour des raisons de performances.
Considérez l'exemple de requête suivant :
SELECT `p`.`id`, `p`.`name`, `p`.`img`, `p`.`safe_name`, `p`.`sku`, `p`.`productstatusid` FROM `products` p WHERE `p`.`id` IN ( SELECT `product_id` FROM `product_category` WHERE `category_id` IN ('223', '15') ) AND `p`.`active`=1
Cette requête récupère les informations sur le produit (p.id, p.name , etc.) de la table products (p), où la colonne p.id correspond aux valeurs qui existent dans la table product_category (product_id) pour des ID de catégorie spécifiques (223 et 15). De plus, la requête garantit que la colonne active dans la table des produits est définie sur 1.
L'utilisation d'une sous-requête pour accomplir cela, plutôt qu'une opération de jointure, vous offre des performances améliorées. Voici comment vous pouvez l'implémenter dans Laravel :
Products::whereIn('id', function($query){ $query->select('paper_type_id') ->from(with(new ProductCategory)->getTable()) ->whereIn('category_id', ['223', '15']) ->where('active', 1); }) ->get();
Ce code définit la requête Laravel Eloquent, où le modèle Products est utilisé. La méthode WhereIn est utilisée pour spécifier que la colonne id des produits doit correspondre aux valeurs présentes dans les résultats d'une sous-requête. La sous-requête est créée en définissant une fonction anonyme qui exécute une requête pour sélectionner paper_type_id dans la table product_category. La requête filtre également les résultats en fonction des valeurscategory_id (223 et 15) et garantit que active est défini sur 1. En tirant parti d'une sous-requête, cette approche garantit une exécution efficace, ce qui la rend idéale pour les scénarios où les performances sont critiques.
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!