laravel - éloquent - get somme de modèle de colonne spécifique
en supposant que j'ai la table
commandes
avec des champs
id, identifiant, le montant, la description
et la table
utilisateur
avec différents domaines
comment si j'ai baguette pour obtenir tous les utilisateurs (avec tous ses champs) et la somme de la "quantité" de la colonne de commandes liées à l'utilisateur?
en supposant que j'ai:
utilisateur:{id:15,prénom:jim,lastName:morrison,sexe:masculin}
et
ordre:{id:1,userId:15,quantité:10,description:"l'ordre xxx"},
ordre:{id:3,userId:15,quantité:40,description:"l'ordre yyy"}
Je souhaite recevoir:
utilisateur:{id:15,prénom:jim,lastName:morrison,genre:homme,orderAmount:50}
Bien sûr, je voudrais éviter de l'instruction foreach.
J'ai placé sur mon modèle utilisateur
public function userOrder (){
return $this->hasMany('Order', 'userId');
}
Et j'ai essayé ceci:
return $this->hasMany('Order', 'userId')->sum('amount');
sans un peu de chance...
OriginalL'auteur ciccioassenza | 2014-11-02
Vous devez vous connecter pour publier un commentaire.
Certains thaughts et nous espérons que la réponse à votre question:
Je voudrais renommer la table utilisateur pour les utilisateurs de coller à laravel conventions.
http://laravel.com/docs/4.2/eloquent#basic-usage
Je voudrais le nom de la méthode dans le modèle de l'Utilisateur commandes
À la requête d'un utilisateur, ses ordres et de la somme par la suite son volume d'ordres des valeurs:
ah ah ... je ne vois que dans votre question, mais hey, Im heureux que vous ayez trouvé votre solution 🙂
Pardonnez-moi, mon anglais est mauvais et j'ai du mal à expliquer le problème... le lien que j'ai posté est liée à une autre question " d'où ce que je voulais dire, c'est comment avec cette solution, j'ai été capable de ne prendre que le dernier message parmi celles liées, sans utiliser un foreach. Le problème persiste 🙁
Simplement, vous pouvez utiliser la fonction somme, même dans la boucle de la lame de modèles. Donc, si vous avez beaucoup de commandes que vous pouvez utiliser @foreach($utilisateurs as $utilisateur) {{$user->commandes->somme('nombre')}} @endforeach
OriginalL'auteur Kristo