Laravel number_format()不正确,重新加载并更新到数据库时数字转换错误

时间:2018-03-14 17:00:42

标签: php laravel numbers format display

我需要你的帮助才能理解Laravel和我一起玩的神秘方式和数字!

我对我的blade.php有一个看法,我有几个:

  

{!! Form :: text(' lim_dma',number_format($ newclient-> lim_dma,2,'。',','),[' ; class' =>' form-control'])!!}

用户将首次存储一个数字,例如 10000 ,该页面将从我的数据库重新加载数据,显示 10,000.00

到目前为止一切都很好。

我发现,如果用户没有更改页面中的任何内容和任何数据(在Form :: text中),并且第二次将数据提交到我的Controller中,Laravel会采用&#39 ; s当前显示在文本框中(所以 10,000.00 ),但在我的数据库中将其更新为 10.00 ...

由于我的blade.php中的 number_format ,Laravel显然(严重地)理解了 10,000.00 中的昏迷。

我试过在我的数据库中使用ma变量的类型(我试过double,我试过float =&gt;同样糟糕的结果......)。 我也试过通过使用空格而不是作为千分隔符来欺骗number_format,但是Laravel也不会被这个骗过...... < / p>

你是怎么做的人,在Laravel(我的是5.1),允许用户存储通用号码(例如100000或50000),转换它,或用千位分隔符显示它而不会干扰控制器&#39 ; s函数和我模型的更新部分(见下文)?

  

$ newclient = Techdata :: where(&#39; id_client&#39;,&#39; =&#39;,$ id_client) - &gt; first();

     

$ newclient-&GT;更新($请求 - &GT;所有());
  最诚挚的问候,

1 个答案:

答案 0 :(得分:0)

在您的Techdata模型(https://laravel.com/docs/5.1/eloquent-mutators)中添加mutator:

public function setLimDmaAttribute($value) {
    $this->attributes['lim_dma'] = str_replace(',', '', $value);
}