Maison > base de données > tutoriel mysql > Comment utiliser les sous-requêtes avec la clause « whereIn » de Laravel ?

Comment utiliser les sous-requêtes avec la clause « whereIn » de Laravel ?

Patricia Arquette
Libérer: 2024-12-07 12:47:16
original
922 Les gens l'ont consulté

How to Use Subqueries with Laravel's `whereIn` Clause?

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();
Copier après la connexion
  1. 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 ».
  2. 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!

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