php - Laravel 中如何聚合相关表字段的查询?

标签 php mysql laravel laravel-5.4

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

销售模型上的关系是:

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

sales 具有以下字段: idvehicle_iddate_timestatus

vehicles具有以下字段: idreg_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 from sales where status = 1 and date_time < "2017-05-10 10:10:05" and exists (select * from vehicles where sales.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/

相关文章:

php - Laravel 5/Codeception 未正确路由

php 根据用户输入生成每月销售报告

mysql - 选择预定义数量的不同值的所有行

php - 在 laravel 中使用 slugs 创建帖子时出现重复条目

laravel - 错误异常 : Creating default object from empty value in Controller

php - 在数据转换之前应用验证

PHP 使用变量将多个参数传递给函数

php - 将我的 Laravel 连接到外部数据库

mysql - 冗余索引怎么办

MySql 连接 3 个表 - 多重连接