Laravel Eloquent : maîtriser l'art de la somme avec GroupBy
Lorsque vous travaillez avec Laravel Eloquent, il y a des moments où vous devez calculer la somme d'une colonne spécifique tout en regroupant les résultats par une autre colonne. Cependant, l’utilisation de l’approche conventionnelle sum() suivie de groupBy() peut conduire à une erreur. En effet, sum() exécute la requête immédiatement, ne laissant aucun objet sur lequel appliquer groupBy().
La réponse : une solution compétente pour le regroupement et la sommation
À aborder ce problème, la solution est d'utiliser la structure de code suivante :
Document::groupBy('users_editor_id') ->selectRaw('sum(no_of_pages) as sum, users_editor_id') ->pluck('sum','users_editor_id');
Ce code groupBy() sur le 'users_editor_id' colonne, puis utilise selectRaw() pour spécifier le calcul de la somme. Enfin, pluck() extrait les valeurs sum et users_editor_id` dans un tableau.
Vous pouvez également utiliser cette approche :
Document::groupBy('users_editor_id') ->selectRaw('*, sum(no_of_pages) as sum') ->get();
Cette méthode renvoie une collection de modèles de document avec un champ de somme, fournissant une représentation légèrement différente du groupe data.
Conclusion
En comprenant l'interaction entre groupBy() et sum() et en tirant parti de la méthode selectRaw(), vous pouvez facilement calculer des sommes tout en regroupant les résultats dans Laravel Eloquent, renforçant vos capacités d'analyse de 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!