【发布时间】:2021-11-13 00:15:05
【问题描述】:
我想运行一个查询,返回:Total_Parcel_Value, Total_Parcel_Delivery of parcels from all orders where customer = A.
【问题讨论】:
标签: laravel eloquent laravel-query-builder
我想运行一个查询,返回:Total_Parcel_Value, Total_Parcel_Delivery of parcels from all orders where customer = A.
【问题讨论】:
标签: laravel eloquent laravel-query-builder
假设您的关系设置正确,您可以执行以下查询:
$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;
【讨论】:
在这里试试这个:
// 客户模型
...
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()
【讨论】: