MoneyPHP implementation for Laravel
Install from composer:
composer require helvetitec/laramoney- Use LaraMoneyCast to cast values to a json field like ['amount' => 100, 'currency' => 'brl']
- Use LaraMoneySimpleCast to cast values directly to an integer field with an optional 'currency' field inside the model.
- Use Money facade for anything else
It's easy to store and receive data from the database with the LaraMoneyCast. The value can either be NULL, an array of ['amount', 'currency'], a numeric value or a \Money\Money object.
The database field needs to be a JSON (compatible) field.
Add to the Models cast:
protected $casts = [
'price' => LaraMoneyCast::class
];The simple cast will store the value as a string, not as a JSON object for easier sorting etc. The value can either be NULL, an array of ['amount', 'currency'], a numeric value or a \Money\Money object.
The database field for price and currency needs to be a string.
Add to the Models cast:
protected $fillable = [
'price',
'currency' //This is the default field, but can be changed inside the config field 'model_currency_field'.
];
protected $casts = [
'price' => LaraMoneySimpleCast::class, //Will automatically set the 'currency' field as well
];