在Laravel中定义Money Fomat

bad*_*man 6 laravel-5.1

我想在laravel 5.1中省钱.

这是表格价格定义:

$table->decimal(price,6,2);
Run Code Online (Sandbox Code Playgroud)

例如 ; 当1.000,50土耳其里拉斯保存到MySQL这种格式1.00

怎么能解决这个问题?

Rwd*_*Rwd 17

我建议不要使用浮点值来将货币存储为小数,因为由于浮点数在系统中的存储方式,浮点数的行为并不完全符合您的预期。

将值存储在 kuru 中会更好吗?因为从长远来看,这会容易得多。

其次,如果您使用 Eloquent,您可以在模型上使用修改器/访问器,例如

public function getPriceAttribute($price)
{
    return $price / 100;
}

public function setPriceAttribute($price)
{
    $this->attributes['price'] = $price * 100;
}
Run Code Online (Sandbox Code Playgroud)

这样您就不必手动转换价格。

  • @SamBellerose kuruş 是里拉的子单位,即 100 kuruş = 1 里拉。就像便士兑英镑或美分兑美元一样。https://en.m.wikipedia.org/wiki/Turkish_lira (2认同)

Saa*_*aad 8

您可以尝试定义这样的价格

$table->decimal('price',9,3);
Run Code Online (Sandbox Code Playgroud)

哪里,

9是精度,即1234567.89的精度为9

3是小数位数,即123456.789的小数位数为3

您可以参考此链接了解数据库的精度和规模 如何解释数据库中数字的精度和比例?