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');
Explication :
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();
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!