首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Laravel中定义货币格式

在Laravel中定义货币格式
EN

Stack Overflow用户
提问于 2015-11-04 15:50:31
回答 3查看 19.9K关注 0票数 15

我正在尝试在laravel 5.1中节省资金格式。

下面是价格定义表:

代码语言:javascript
复制
$table->decimal(price,6,2);

例如,在将土耳其语Liras保存为MySQL时,使用此格式1.00

如何解决这个问题?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-11-04 17:12:24

你可以试着这样定义你的价格

代码语言:javascript
复制
$table->decimal('price',9,3);

哪里,

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

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

有关数据库How do I interpret precision and scale of a number in a database?的精度和小数位数的信息,请参阅此链接

票数 17
EN

Stack Overflow用户

发布于 2015-11-04 19:14:42

我建议不要使用浮点值将货币存储为小数,因为由于浮点数在系统中的存储方式,浮点数的行为与您期望的不完全一样。

您最好将值存储在kuruş中,因为从长远来看,它会容易得多。

其次,如果你正在使用Eloquent,你可以在模型上使用mutators/accessors

代码语言:javascript
复制
public function getPriceAttribute($price)
{
    return $price / 100;
}

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

这样你就不需要手动转换价格了。

票数 17
EN

Stack Overflow用户

发布于 2018-07-20 22:23:29

照明蓝图不支持money列。money列类型本身仅在几个DBMSes中受支持。

您可以做的是在初始CREATE语句之后向数据库发出一条ALTER TABLE语句:

代码语言:javascript
复制
Schema::create('my_table', function(Blueprint $table) {
    $table->decimal('my_money_column', 999, 2);
    // ... the rest of the column definitions
});

DB::statement("
    ALTER TABLE my_table ALTER COLUMN my_money_column
        SET DATA TYPE MONEY;
");

不过要小心,因为这(可能)会破坏迁移脚本的跨DBMS兼容性。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33516398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档