Maison > base de données > tutoriel mysql > Comment calculer correctement la somme avec GroupBy dans Laravel Eloquent ?

Comment calculer correctement la somme avec GroupBy dans Laravel Eloquent ?

Barbara Streisand
Libérer: 2024-12-30 00:11:39
original
543 Les gens l'ont consulté

How to Correctly Calculate Sum with GroupBy in Laravel Eloquent?

Calcul de la somme avec GroupBy dans Laravel Eloquent

Dans Laravel, l'ORM Eloquent offre un moyen puissant d'interagir avec la base de données. Une tâche courante consiste à calculer la somme d'une colonne tout en regroupant par un champ spécifique. Bien que l'utilisation de la méthode sum() semble simple, elle peut entraîner des erreurs dues à l'ordre d'exécution.

Approche incorrecte

$this->data['no_of_pages'] = Document::sum('no_of_pages')
                            ->groupBy('users_editor_id'); // Call to undefined method
Copier après la connexion

Dans le code ci-dessus, la méthode groupBy() est appelée après la méthode sum(), ce qui provoque une erreur car sum() exécute la requête et renvoie le résultat avant que groupBy() puisse être appliquée.

Solutions correctes

Pour calculer correctement la somme avec groupBy, utilisez les approches suivantes :

Approche 1 (recommandée)

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

Cette méthode utilise la méthode selectRaw() pour créer un alias pour le calcul somme (somme). Ensuite, la méthode pluck() extrait les champs sum et users_editor_id, fournissant un résultat de tableau associatif.

Approche 2

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

Cette méthode crée un pseudo-ORM résultat en ajoutant un champ de somme à chaque modèle de document. Cependant, c'est moins souhaitable car le résultat n'est pas une véritable collection ORM.

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