Dans Laravel, nous devons souvent interroger les premiers enregistrements de la base de données, par exemple interroger les cinq produits les plus vendus dans une catégorie de produits. Dans ce cas, nous utilisons généralement des requêtes de regroupement pour y parvenir.
Cet article expliquera comment effectuer une requête de groupe dans Laravel et interroger les premiers enregistrements de chaque groupe.
Tout d'abord, nous devons disposer d'un tableau de données pour stocker les informations sur le produit. Supposons que nous ayons créé un tableau de données appelé « produits » et que nous y ayons inséré des données.
Nous pouvons utiliser le générateur de requêtes de Laravel pour écrire des instructions de requête. Tout d’abord, nous devons regrouper les produits par catégorie, puis interroger les cinq principaux produits de chaque groupe. L'instruction de requête est la suivante :
$products = DB::table('products') ->select('category', DB::raw('MAX(sales) as max_sales')) ->groupBy('category') ->orderByDesc('max_sales') ->limit(5) ->get();
Ici, nous utilisons la méthode select() pour spécifier les champs à interroger, et la méthode DB::raw() pour calculer le volume de ventes maximum de chaque groupe. La méthode groupBy() spécifie le regroupement par champs de catégorie, la méthode orderByDesc() trie par ventes maximales par ordre décroissant et la méthode limit() limite le nombre d'enregistrements interrogés à 5. Enfin, utilisez la méthode get() pour exécuter la requête et renvoyer un ensemble de résultats avec la catégorie comme clé et le volume de ventes maximum comme valeur.
Ensuite, nous devons traiter les résultats de la requête pour obtenir les cinq meilleurs produits de chaque groupe. Nous pouvons traiter l'ensemble de résultats dans une boucle, interroger les cinq premiers éléments de chaque groupe et les ajouter à un nouveau tableau.
$result = []; foreach ($products as $product) { $query = DB::table('products') ->select('*') ->where('category', $product->category) ->orderByDesc('sales') ->limit(5) ->get(); $result[$product->category] = $query; }
Dans la boucle, nous interrogeons d'abord tous les produits de chaque catégorie, puis trions par volume de ventes par ordre décroissant, limitons le nombre d'enregistrements de requête à 5 et enfin ajoutons les résultats de la requête à un nouveau tableau. Une fois la boucle terminée, nous obtenons un nouveau tableau avec la catégorie comme clé et le résultat de la requête comme valeur. Ce tableau contient les cinq produits les plus vendus dans chaque catégorie.
Enfin, nous pouvons parcourir le nouveau tableau et afficher les résultats de la requête sur la page.
foreach ($result as $category => $products) { echo '<h3>'.$category.'</h3>'; echo '<ul>'; foreach ($products as $product) { echo '<li>' . $product->name . '</li>'; } echo '</ul>'; }
Lors de la sortie des résultats, nous affichons d'abord le nom de la catégorie, puis nous affichons le nom de chaque produit dans une liste ul.
Dans cet article, nous avons présenté comment utiliser une requête groupée dans Laravel pour interroger les premiers enregistrements de chaque groupe. En utilisant select(), groupBy(), orderByDesc(), limit() et d'autres méthodes, nous pouvons écrire de manière flexible des instructions de requête pour répondre à diverses exigences de requête complexes. Dans le même temps, nous avons également appris à utiliser le générateur de requêtes de Laravel pour écrire des instructions de requête de base de données, ainsi que pour traiter et afficher les résultats des requêtes.
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!