Sommation sur plusieurs champs dans Laravel
Je me demandais si il est possible de faire la somme de plusieurs champs dans une requête à l'aide de la courant de générateur de requêtes.
Actuellement j'ai deux tables: les événements et les participants. Les participants appartiennent à des événements et avoir deux champs: total_raised et total_hours. Ce que je veux faire est de sélectionner tous les événements et le montant total amassé/nombre total d'heures passées sur cet événement. Maintenant, si j'étais juste à l'aide de SQL, je voudrais faire quelque chose à l'effet de:
SELECT Event.id, sum(Attendees.total_raised), sum(Attendees.total_hours)
FROM Events JOIN Attendees ON Events.id = Attendees.event_id
GROUP BY Event.id
Cependant, je n'arrive pas à trouver un moyen de prendre plusieurs sommes à la fois en utilisant le fluide générateur de requêtes. Est-il possible de faire ce que je suis en train de faire à l'aide de fluent, ou devrais-je simplement faire un raw requête SQL?
OriginalL'auteur Jonathan | 2013-03-12
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
sum()
c'est à dire:Si cela ne fonctionne pas, vous pouvez essayer:
J'ai mis à jour ma réponse
Gotcha, j'ai fini à l'aide de cette solution, bien que j'ai eu à ajouter une légère additif étant donné que j'ai eu des problèmes avec la DB préfixes ne pas être inclus dans votre réponse. Merci pour l'aide.
Mauvaise réponse ne devrait pas être marqué et ont voté. Vous ne pouvez pas utiliser plusieurs fonctions d'agrégation. Tout comme vous ne pouvez pas faire "->get()->tous les()" ou "->sum()->get()". Ces fonctions ne font pas de retour de la requête de l'objet.
OriginalL'auteur Simone
Bâtiment sur simones réponse. Vous pouvez faire cela, pour l'essentiel par l'exécution de deux requêtes.
Cela dépend de la situation. Si elle était sur la admin/CMS côté des choses, je serais pencher vers cette solution. Si il est sur le front de fin, il doit être réalisé en une seule requête qui sera plus rapide. Selon le contenu, il peut ou peut ne pas être une différence significative.
OriginalL'auteur Collin James
Je suis en train de faire la même chose dans mon projet, Voici la solution que j'ai trouvé. Je suis à l'aide de Laravel 5.2 Éloquent voici la déclaration Éloquente.
Cette déclaration que j'utilise dans mon projet, Veuillez vous fait changer en fonction de votre besoin.
Même façon que vous pouvez utiliser pour votre requête comme
OriginalL'auteur Nikunj K.