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
commecomme$ 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
ventesetdetail_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 tableausalesou dans le tableaudetails? pourriez-vous partager la structure des tableaux avec nous s'il vous plaît.