Sous-requête Laravel WHERE IN :
Vous recherchez un moyen performant de récupérer les données produit de la table products dans Laravel, en utilisant une sous-requête pour spécifier les valeurs product_id à inclure. Bien qu'une alternative de jointure existe, vous préférez une approche basée sur des sous-requêtes à des fins d'optimisation.
Solution :
Vous trouverez ci-dessous le code qui répond à vos besoins, en exploitant les sous-requêtes au sein du où clause :
Products::whereIn('id', function($query){
$query->select('paper_type_id')
->from(with(new ProductCategory)->getTable())
->whereIn('category_id', ['223', '15'])
->where('active', 1);
})
->get();
Copier après la connexion
Explication :
- La requête commence par une base de modèle Products, qui représente la table cible à partir de laquelle nous souhaitons récupérer des données.
- La clause WhereIn est utilisée, spécifiant la colonne id de la table
products comme colonne à évaluer.
- Une fermeture imbriquée est utilisée pour définir la sous-requête. Dans cette fermeture, nous sélectionnons le paper_type_id dans une table temporaire créée à l'aide de with(new ProductCategory)->getTable().
- La sous-requête applique ensuite les filtres nécessaires, notammentwhereIn('category_id', ['223 ', '15']) pour restreindre les résultats à des catégories spécifiques et où('active', 1) pour inclure uniquement les actifs produits.
- Enfin, l'intégralité de la requête est exécutée à l'aide de get(), récupérant efficacement les données produit souhaitées.
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!