Maison > base de données > tutoriel mysql > Comment effectuer efficacement des agrégations de sommes avec GroupBy dans Laravel Eloquent ?

Comment effectuer efficacement des agrégations de sommes avec GroupBy dans Laravel Eloquent ?

DDD
Libérer: 2025-01-03 08:25:38
original
1021 Les gens l'ont consulté

How to Efficiently Perform Sum Aggregations with GroupBy in Laravel Eloquent?

Agrégation de somme avec GroupBy dans Laravel Eloquent

Introduction :
L'ORM Eloquent de Laravel fournit un moyen pratique de récupérer et de manipuler des données à partir d'un base de données. Lorsque vous travaillez avec de grands ensembles de données, il devient nécessaire de regrouper les données et d'effectuer des agrégations telles que des sommes.

Énoncé du problème :
Le code fourni tente de calculer la somme de no_of_pages regroupés par users_editor_id. en utilisant les méthodes sum() et groupBy() d'Eloquent. Cependant, cette approche échoue car sum() exécute la requête et renvoie le résultat avant que groupBy() puisse être appliqué.

Solution :

Pour résoudre Pour résoudre ce problème, nous pouvons utiliser une combinaison de méthodes groupBy() et selectRaw(). Voici une solution mise à jour :

Document::groupBy('users_editor_id')
   ->selectRaw('sum(no_of_pages) as sum, users_editor_id')
   ->pluck('sum','users_editor_id');
Copier après la connexion

Explication :

  • groupBy('users_editor_id') : regroupe les lignes par la colonne users_editor_id.
  • selectRaw('sum(no_of_pages) comme somme, users_editor_id') : ajoute une nouvelle colonne nommée sum au résultat, qui contient la somme de no_of_pages pour chaque groupe.
  • pluck('sum','users_editor_id') : récupère les valeurs sum et users_editor_id et les renvoie sous forme de tableau.

Alternative Solution :

Une autre approche consiste à utiliser la méthode selectRaw() avec get() pour renvoyer une collection de modèles pseudo-ORM :

Document::groupBy('users_editor_id')
   ->selectRaw('*, sum(no_of_pages) as sum')
   ->get();
Copier après la connexion

Cette méthode ajoute la somme colonne à chaque modèle résultant, vous permettant d'y accéder comme un modèle normal propriété.

Conclusion :

En utilisant les méthodes groupBy(), selectRaw() et pluck(), nous pouvons effectuer efficacement des agrégations de somme avec regroupement dans Laravel Eloquent . Ces techniques nous permettent de gérer efficacement de grands ensembles de données et d'extraire des informations précieuses à partir des donné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!

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