我的 laravel 5.4 应用程序上有一对多(反向)关系。有两个模型 Sale
和 Vehicle
与场景相关且关联。
销售
模型上的关系是:
public function vehicle()
{
return $this->belongsTo('App\Models\Vehicle','vehicle_id');
}
表sales
具有以下字段:
id
、vehicle_id
、date_time
、status
等
表vehicles
具有以下字段:
id
、reg_number
、卷
、状态
等
我想要的是搜索条件中Sale
记录的“vehicles.volume”字段的总和。
我尝试过一些方法,如下所示:
$query = Sale::where('status', 1);
$query = $query->where('date_time', '<', "2017-05-10 10:10:05");
$totalVolume = $query->whereHas('vehicle')->sum('vehicles.volume');
它导致了以下错误:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'vehicles.volume' in 'field list' (SQL: select sum(
vehicles
.volume
) as aggregate fromsales
wherestatus
= 1 anddate_time
< "2017-05-10 10:10:05" and exists (select * fromvehicles
wheresales
.vehicle_id
=vehicles
.id
))
希望等待一个使用 Eloquent 查询“获取销售量总和”的解决方案。
- 已编辑
最佳答案
在对 vehicles.volume
列求和之前,您需要使用联接
$totalVolume = Sale::where('status', 1)
->where('date_time', '<', "2017-05-10 10:10:05")
->join('vehicles', 'vehicles.id', '=', 'sales.vehicle_id')
->select(DB::raw('sum(vehicles.volume) as total_volume');
关于php - Laravel 中如何聚合相关表字段的查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46211179/