我的DB中有一个名为"value"的字段,其类型为decimal(9,2)。
我在Laravel 4中编码,我试图使用访问器和赋值器来格式化内容,以包括一个数千的逗号,并将逗号值的格式设置为十进制,这样它就可以保存到DB中而不会引发错误。
示例:DB值:1234.00显示值:1234.00
我想我已经在模型中使用以下代码从DB中读取时整理好了格式
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的值删除逗号并将小数点放在其位置
示例:显示值:1234.00DB值:1.23
你知道我如何在(英国货币)中取一个带逗号的值并将其作为小数存储在数据库中吗????
谢谢!
这可能会奏效:
public function setValueAttribute($value)
{
$this->attributes['value'] = floatval(preg_replace('/[^d.]/', '', $value));
}
如果这对某人仍然有用,请查看PHP money_format
试试这个:
public function setValueAttribute($value)
{
$this->attributes['value'] = preg_replace('/([0-9]{2})$/', ".$1", preg_replace('/[D]+/','', $value));
}