仅使用 Eloquent 按案例求和

Sum by cases using just Eloquent

我有一个名为 Purchases 的模型,它与 Product 模型具有多对多关系。我创建了一个模型来管理名为 PurchasedProduct 的多对多关系中的 table。该模型与另一个称为货币的模型相关。

购买table: Id, number, created_at, updated_at.
Product_table: Id, description, created_at, updated_at.
货币table: Id, code, name, ratio.
Product_Purchase table:id,purchase_id,product_id,currency_id,数量,价格

一个User可以购买多个Products,那么他可以支付很多Currencies。为了管理每笔交易,我想按货币对总计(数量 * 价格)求和。 我试图用访问器来做,但我所能做的就是在不考虑货币的情况下对数量 * 价格的乘积求和。

public function getTotalAttribute($value)
{
    $transformers = $this->transformers();
    return $transformers->sum(\DB::raw('quantity * price'));
}`

你可以使用groupBy

public function getTotalAttribute($value)
{
    $transformers = $this->transformers();
    return $transformers->groupBy('currency_id')
    ->selectRaw('sum(quantity * price) as sum, currency_id')
    ->get();
}