Filament: Currency Fields with Casts from Cents

Dealing with Money can be complicated. It's not only about float/integer in DB, but also about Currency, especially with multiple currencies. We will show you how to deal with them, in this example.

FilamentExamples ThumbBase (26)

Get the Source Code:

How it works

First, we have created a Currency Model with a name and symbol fields. Then, we have seeded some basic currencies:

database/seeders/DatabaseSeeder.php

use App\Models\Currency;
 
// ...
 
$currencies = [
[
'name' => 'USD',
'symbol' => '$',
],
[
'name' => 'EUR',
'symbol' => '€',
],
[
'name' => 'GBP',
'symbol' => '£',
],
];
 
foreach ($currencies as $currency) {
Currency::create($currency);
}
 
// ...

Next, we created a model that uses currency. In our case, this was SubscriptionPlan which has a price. To store the price, we have created a MoneyCast that stores the price as an integer in the database:

php artisan make:cast MoneyCast

In the MoneyCast, we have defined the set and get methods to store and retrieve the...

The FULL tutorial is available after the purchase: in the Readme file of the official repository you would get invited to.
Get the Source Code: All 50 Premium Examples for $99 Only Project Examples for $59