return 模型中带小数的价格的最佳方式
Best way to return price with decimals from Model
在我的模型中,我有基于 hasMany 关系的总价计算。它看起来像这样:
public function totalPrice(): string
{
return num_format($this->hasMany(Direction::class)->sum('price'));
}
我使用 num_format 文件中描述的 num_format 函数。如果我需要更改数字格式,我可以随时编辑辅助函数。但是我想知道是否有 better/nicer 方法可以做到这一点?据我了解,在这种情况下我不能使用 $casts 作为函数吗?你都有些什么想法呢?你认为我使用的方法正确吗?
谢谢你的想法
我认为这很好,我个人会解耦关系,然后让 totalPrice 为 num_format($this->directions()->sum('price'))
如果你想要一个定义它的全局方式,你可以定义一个 global scope ,它会被称为 sumWithDp
,然后在任何具有定义关系的模型中你可以调用:
$this->relation()->sumWithDp('price', $decimalPlaces)
(或者如果你愿意,总是让它成为 2 DP)
在我的模型中,我有基于 hasMany 关系的总价计算。它看起来像这样:
public function totalPrice(): string
{
return num_format($this->hasMany(Direction::class)->sum('price'));
}
我使用 num_format 文件中描述的 num_format 函数。如果我需要更改数字格式,我可以随时编辑辅助函数。但是我想知道是否有 better/nicer 方法可以做到这一点?据我了解,在这种情况下我不能使用 $casts 作为函数吗?你都有些什么想法呢?你认为我使用的方法正确吗? 谢谢你的想法
我认为这很好,我个人会解耦关系,然后让 totalPrice 为 num_format($this->directions()->sum('price'))
如果你想要一个定义它的全局方式,你可以定义一个 global scope ,它会被称为 sumWithDp
,然后在任何具有定义关系的模型中你可以调用:
$this->relation()->sumWithDp('price', $decimalPlaces)
(或者如果你愿意,总是让它成为 2 DP)