我正在尝试在laravel 5.1中节省资金格式。
下面是价格定义表:
$table->decimal(price,6,2);例如,在将土耳其语Liras保存为MySQL时,使用此格式1.00
如何解决这个问题?
发布于 2015-11-04 17:12:24
你可以试着这样定义你的价格
$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?的精度和小数位数的信息,请参阅此链接
发布于 2015-11-04 19:14:42
我建议不要使用浮点值将货币存储为小数,因为由于浮点数在系统中的存储方式,浮点数的行为与您期望的不完全一样。
您最好将值存储在kuruş中,因为从长远来看,它会容易得多。
其次,如果你正在使用Eloquent,你可以在模型上使用mutators/accessors。
public function getPriceAttribute($price)
{
return $price / 100;
}
public function setPriceAttribute($price)
{
$this->attributes['price'] = $price * 100;
}这样你就不需要手动转换价格了。
发布于 2018-07-20 22:23:29
照明蓝图不支持money列。money列类型本身仅在几个DBMSes中受支持。
您可以做的是在初始CREATE语句之后向数据库发出一条ALTER TABLE语句:
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兼容性。
https://stackoverflow.com/questions/33516398
复制相似问题