我的数据库中有一个名为'value'的字段,其类型为decimal(9,2)。
我正在使用Laravel 4进行编码,我正在尝试使用访问器和更改器来格式化其内容,以包含数千个逗号,并将格式设置为逗号返回小数,这样它将保存到DB没有抛出错误。
实施例: DB值:1234.00 显示值:1,234.00
我想我在使用模型中的以下代码从数据库中读取时已经整理出格式
public function getValueAttribute($value)
{
if ($value !== NULL)
{
return number_format($value, 2);
}
}
我似乎遇到的问题是在保存时正确设置格式。
public function setValueAttribute($value)
{
$this->attributes['value'] = floatval(str_replace(',', '.', str_replace('.', '', $value)));
}
这导致超过1000的值删除了逗号并将小数点放在它的位置
实施例: 显示值:1,234.00 DB值:1.23
我是如何使用逗号(英国货币)取值并将其作为小数点正确存储在DB中的任何想法????
谢谢!
答案 0 :(得分:0)
这可能会起到作用:
public function setValueAttribute($value)
{
$this->attributes['value'] = floatval(preg_replace('/[^\d.]/', '', $value));
}
答案 1 :(得分:0)
如果这对某人有用,请查看PHP money_format
答案 2 :(得分:0)
试试这个:
public function setValueAttribute($value)
{
$this->attributes['value'] = preg_replace('/([0-9]{2})$/', ".$1", preg_replace('/[\D]+/','', $value));
}