仅使用 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();
}
我有一个名为 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();
}