J'ai les relations user-> sales-> detail_sales
, un utilisateur a une ou plusieurs ventes, une vente a un ou plusieurs détails. Ce que j'essaie de faire, c'est obtenir avec ELOQUENT , le total de toutes les ventes par utilisateur, c'est-à-dire faire une somme (totaldetails)
du total calculé avec withCount.
@foreach($users as $user) {{ $user->salestotal}} @endforeach
return App\User::with(['sales' => function($query){ // get total for detail_sales for sale $query->withCount(['detail as totaldetails' => function($que){ $que->select(DB::raw('sum(subtotal)')); }]); }])->get();
Utilisateur
public function sales() { return $this->hasMany(Sale::class ); }
Cette requête que j'ai actuellement
public function sale() { return $this->belongsTo(Sale::class); }
mais je la souhaite dans le Modèle utilisateur, pour avoir une propriété comme salestotal par exemple, est-ce possible?
public function detail() { return $this->hasMany(Detail:class); } public function user() { return $this->belongsTo('App\User'); }
3 Réponses :
Pourquoi ne pas simplement utiliser la fonction sum ()
car tout est dans une collection?
@foreach($users as $user) {{ $user->sales->sum('totaldetails') }} @endforeach
J'espère que cela aide:
return App\User::with(['sales' => function($query){ // get total for detail_sales for sale $query->withCount(['detail as totaldetails' => function($que){ $que->select(DB::raw("SUM(subtotal) as salestotal")); }]); }])->get();
Merci d'avoir répondu, mais ça ne sert à rien de copier le code de ma question comme réponse, je ne cherche pas quelque chose que j'ai déjà.
Vous pouvez utiliser withCount ()
avec un Relation HasManyThrough
:
class User extends Model { public function details() { return $this->hasManyThrough(Detail:class, Sale::class); } } return App\User::withCount(['details as salestotal' => function($query) { $query->select(DB::raw('sum(subtotal)')); }])->get(); @foreach($users as $user) {{ $user->salestotal }} @endforeach
Utilisez
comme
comme$ que-> select (DB :: raw ('sum (subtotal) as salestotal'));
@NikleshRaut Ce dont j'ai besoin est la somme de toutes les valeurs renvoyées par sum (sous-total) c'est-à-dire sum (totaldetails) et l'avoir comme propriété dans le modèle parent User.
Veuillez publier les relations
ventes
etdetail_sales
.@JonasStaudenmeir J'ai ajouté les relations, j'espère que vous comprenez ce que je veux obtenir, sinon commenter et fournir les informations nécessaires
où se trouve la colonne
subtotal
, dans le tableausales
ou dans le tableaudetails
? pourriez-vous partager la structure des tableaux avec nous s'il vous plaît.