我有一个称为“购买”的模型,该模型与“产品”模型具有多对多关系。我创建了一个模型来管理多对多关系表(称为PurchasedProduct)。该模型与另一个称为Currency的模型有关。
购买表:ID,数字,created_at,updated_at。
产品表:ID,说明,created_at,updated_at。
货币表:ID,代码,名称,比率。
产品购买表:ID,purchase_id,product_id,currency_id,数量,价格。
User
可以购买多个Products
,然后他可以支付多个Currencies
。为了管理每笔交易,我想按货币对总数(数量*价格)求和。
我尝试使用访问器来完成此操作,但是我所能做的就是将数量*价格的乘积加起来而不考虑货币。
public function getTotalAttribute($value)
{
$transformers = $this->transformers();
return $transformers->sum(\DB::raw('quantity * price'));
}`
答案 0 :(得分:1)
您可以使用groupBy
public function getTotalAttribute($value)
{
$transformers = $this->transformers();
return $transformers->groupBy('currency_id')
->selectRaw('sum(quantity * price) as sum, currency_id')
->get();
}