2014-04-29 50 views
0

我有一個字段在我的數據庫中稱爲「值」,它是十進制類型(9,2)。Laravel從數據庫字段格式化貨幣

我在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

任何想法如何,我走一個逗號(英國貨幣)的值並將其作爲十進制正確存儲在數據庫中?

謝謝!

回答

0

這可能做的伎倆:

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

試試這個:

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