如何在 eloquent Laravel 关系中获得另一个总和的总和
How to get the sum of another sum in an eloquent Laravel relationship
我有关系user->sales->detail_sales
,一个用户有一个或多个销售,一个销售有一个或多个细节。我想做的是用 ELOQUENT 获取每个用户的所有销售额的总和,也就是说,用 withCount 计算总销售额的 sum(totaldetails)
.
Sale.php
public function detail()
{
return $this->hasMany(Detail:class);
}
public function user()
{
return $this->belongsTo('App\User');
}
DetailSale
public function sale()
{
return $this->belongsTo(Sale::class);
}
用户
public function sales()
{
return $this->hasMany(Sale::class );
}
我目前有这个查询
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();
但我希望在用户模型中有一个 属性,例如 salestotal,这可能吗?
@foreach($users as $user)
{{ $user->salestotal}}
@endforeach
为什么不直接使用 sum()
函数,因为它都在一个集合中?
@foreach($users as $user)
{{ $user->sales->sum('totaldetails') }}
@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) as salestotal"));
}]);
}])->get();
您可以将 withCount()
与 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
我有关系user->sales->detail_sales
,一个用户有一个或多个销售,一个销售有一个或多个细节。我想做的是用 ELOQUENT 获取每个用户的所有销售额的总和,也就是说,用 withCount 计算总销售额的 sum(totaldetails)
.
Sale.php
public function detail()
{
return $this->hasMany(Detail:class);
}
public function user()
{
return $this->belongsTo('App\User');
}
DetailSale
public function sale()
{
return $this->belongsTo(Sale::class);
}
用户
public function sales()
{
return $this->hasMany(Sale::class );
}
我目前有这个查询
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();
但我希望在用户模型中有一个 属性,例如 salestotal,这可能吗?
@foreach($users as $user)
{{ $user->salestotal}}
@endforeach
为什么不直接使用 sum()
函数,因为它都在一个集合中?
@foreach($users as $user)
{{ $user->sales->sum('totaldetails') }}
@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) as salestotal"));
}]);
}])->get();
您可以将 withCount()
与 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