Maison > développement back-end > tutoriel php > Comment implémenter une sous-requête avec la clause WHERE IN dans Laravel Eloquent ?

Comment implémenter une sous-requête avec la clause WHERE IN dans Laravel Eloquent ?

Barbara Streisand
Libérer: 2024-12-06 20:45:16
original
734 Les gens l'ont consulté

How to Implement a Subquery with WHERE IN Clause in Laravel Eloquent?

Sous-requête avec WHERE IN dans Laravel

Dans Laravel, vous pouvez effectuer des requêtes complexes à l'aide de sous-requêtes. Un cas d'utilisation courant est une sous-requête avec une clause WHERE IN. Cet article montre comment implémenter efficacement ce type de requête.

Considérez la requête SQL suivante :

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
Copier après la connexion

En utilisant l'ORM Eloquent de Laravel, vous pouvez réaliser cette requête avec le code suivant :

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

Dans cet exemple, nous commençons par créer une requête sur le modèle 'Produits' (« Produits ::whereIn (...) »). La clause 'whereIn' spécifie que nous souhaitons filtrer les 'Produits' en fonction du champ 'id', qui doit être inclus dans les résultats renvoyés par la sous-requête.

La sous-requête elle-même est définie à l'aide d'une fonction anonyme. ("$requête => ...'). Cette sous-requête sélectionne le champ « paper_type_id » dans la table « product_category », qui est supposé être disponible via une relation avec le modèle « ProductCategory ». Le nom de la table est obtenu à l'aide de la méthode 'with(...)->getTable()'.

Dans la sous-requête, nous ajoutons des conditions pour filtrer les résultats en fonction du champ 'category_id' et nous assurons que le Le champ « actif » est défini sur 1. Ces conditions permettent de affiner les catégories de produits à inclure dans les résultats finaux.

En utilisant cette approche, vous pouvez récupérer efficacement les produits qui répondent aux critères souhaités sans devoir effectuer une jointure coûteuse.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal