Laravel从DB字段格式化货币



我的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));
}

最新更新