如何在Laravel中相关表的字段上聚合查询?

时间:2017-09-14 05:28:20

标签: php mysql laravel laravel-5.4

我的laravel 5.4应用程序中有一对多(反向)关系。有两个模型SaleVehicle与场景相关并关联。

Sale模型的关系是:

public function vehicle()
    {
        return $this->belongsTo('App\Models\Vehicle','vehicle_id');
    }

sales包含以下字段: idvehicle_iddate_timestatus等。

vehicles包含以下字段: idreg_numbervolumestatus等。

我想要的是搜索条件中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]:找不到列:1054未知列   'fields list'中的'vehicles.volume'(SQL:select   总和(vehiclesvolume)作为sales的汇总,其中status = 1   和date_time&lt; “2017-05-10 10:10:05”并存在(从vehicles中选择* salesvehicle_id =   vehiclesid))

希望使用雄辩的查询等待“获得销售量总和”的解决方案。

  • 被修改

2 个答案:

答案 0 :(得分:1)

在汇总name:/path/in/container

之前,您需要使用联接
vehicles.volume

答案 1 :(得分:0)

select sum(volume) as aggregate from vehicles INNER JOIN sales ON vehicles.id=sales.vehicle_id 
相关问题