Laravel 查询生成器对多列求和
Posted
技术标签:
【中文标题】Laravel 查询生成器对多列求和【英文标题】:Laravel Query Builder sum multiple columns 【发布时间】:2021-11-13 00:15:05 【问题描述】:如图所示,我有三张桌子。
我想运行一个查询,返回:Total_Parcel_Value, Total_Parcel_Delivery of parcels from all orders where customer = A.
【问题讨论】:
【参考方案1】:假设您的关系设置正确,您可以执行以下查询:
$res = Parcel::query()
->whereHas('order', function($q)
$q->where('customer_id', 12);
)
->selectRaw('SUM(parcel_value) as Total_Parcel_Value, SUM(delivery_fee) as Total_Parcel_Delivery')
->first();
$res->Total_Parcel_Value;
$res->Total_Parcel_Delivery;
【讨论】:
【参考方案2】:在这里试试这个:
// 客户模型
...
public function orders(): HasMany
return $this->hasMany(Order::class)
//订单模型
...
public function customer(): BelongsTo
return $this->belongsTo(Customer::class)
public function parcels(): HasMany
return $this->hasMany(Parcel::class)
// 地块模型
...
public function order(): BelongsTo
return $this->belongsTo(Order::class)
查询:
Parcel::selectRaw('SUM(parcel_value)')
->selectRaw('SUM(delivery_fee)')
->whereHas('order.customer', function(Builder $builder) use ($customerName)
$builder->where('customers.name', $customerName)
)->first()
【讨论】:
以上是关于Laravel 查询生成器对多列求和的主要内容,如果未能解决你的问题,请参考以下文章