【问题标题】:Laravel formatting currency from DB field来自 DB 字段的 Laravel 格式化货币
【发布时间】:2014-04-29 13:57:55
【问题描述】:

我的数据库中有一个名为“值”的字段,其类型为十进制 (9,2)。

我在 Laravel 4 中编码,我正在尝试使用访问器和修改器来格式化它的内容以包含数千个逗号,并将带逗号的值设置为小数,以便保存到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

任何想法我如何在(英国货币)中使用逗号获取值并将其作为小数正确存储在数据库中????

谢谢!

【问题讨论】:

    标签: laravel formatting decimal currency


    【解决方案1】:

    这可能会奏效:

    public function setValueAttribute($value)
    {
        $this->attributes['value'] = floatval(preg_replace('/[^\d.]/', '', $value));
    }
    

    【讨论】:

      【解决方案2】:

      如果这对某人仍然有用,请查看PHP money_format

      【讨论】:

        【解决方案3】:

        试试这个:

        public function setValueAttribute($value)
        {
            $this->attributes['value'] = preg_replace('/([0-9]{2})$/', ".$1", preg_replace('/[\D]+/','', $value));
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-10-24
          • 2022-11-14
          • 2018-04-01
          • 1970-01-01
          • 2012-01-29
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多