在 Laravel 中,如何将一个模型中的列按另一个模型中的列分组?
How would you aggregate a column in one model grouped by a column in another model in Laravel?
我知道这很简单,但我就是无法以 Eloquent 的方式解决这个问题。
对于这样维护产品主数据和事务 table 的简单场景:
**Table : Products**
prod_id
Prod Name
Manufacturer
**Table : Sales**
prod_id
qty_sold
selling_price
已在“产品”模型上建立关系
public function sales()
{
return $this->hasMany('\App\Models\Sale','prod_id','prod_id');
}
我如何运行 eloquent 查询产品 return 按制造商分组的销售数量(总和('qty'))?
其次,是否可以运行查询销售模型以获取按制造商分组的聚合(来自产品模型)?
基本上,我希望一个模型的聚合按另一个相关模型中的列分组。
这是一个可能的 SQL 查询(请原谅打字错误,我在移动设备上):
SELECT products.manufacturer, sum(qty_sold)
FROM products LEFT JOIN sales on products.prod_id = sales.prod_id
GROUP BY products.manufacturer
我会使用 DB::raw()
select:
DB::table('products')
->leftJoin('sales', 'products.prod_id', '=', 'sales.prod_id')
->select(DB::raw('products.manufacturer, SUM(qty_sold)'))
->groupBy('products.manufacturer')
->get()
您也可以尝试类似的方法:
$sales = Product::select(DB::raw('products.manufacturer, SUM(qty_sold)'))
->groupBy('products.manufacturer')
->get();
我知道这很简单,但我就是无法以 Eloquent 的方式解决这个问题。 对于这样维护产品主数据和事务 table 的简单场景:
**Table : Products**
prod_id
Prod Name
Manufacturer
**Table : Sales**
prod_id
qty_sold
selling_price
已在“产品”模型上建立关系
public function sales()
{
return $this->hasMany('\App\Models\Sale','prod_id','prod_id');
}
我如何运行 eloquent 查询产品 return 按制造商分组的销售数量(总和('qty'))?
其次,是否可以运行查询销售模型以获取按制造商分组的聚合(来自产品模型)?
基本上,我希望一个模型的聚合按另一个相关模型中的列分组。
这是一个可能的 SQL 查询(请原谅打字错误,我在移动设备上):
SELECT products.manufacturer, sum(qty_sold)
FROM products LEFT JOIN sales on products.prod_id = sales.prod_id
GROUP BY products.manufacturer
我会使用 DB::raw()
select:
DB::table('products')
->leftJoin('sales', 'products.prod_id', '=', 'sales.prod_id')
->select(DB::raw('products.manufacturer, SUM(qty_sold)'))
->groupBy('products.manufacturer')
->get()
您也可以尝试类似的方法:
$sales = Product::select(DB::raw('products.manufacturer, SUM(qty_sold)'))
->groupBy('products.manufacturer')
->get();