Maison > cadre php > Laravel > le corps du texte

Le groupe Laravel interroge les premiers enregistrements

PHPz
Libérer: 2023-05-29 09:08:08
original
739 Les gens l'ont consulté

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.

  1. Préparation

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.

  1. Écrire des instructions de requête

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

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.

  1. Traitement des résultats de la requête

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

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.

  1. Résultats de sortie

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

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.

  1. Résumé

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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal