Stĺpec price sa cez AsMoney::currencyColumn('currency') z money-for-laravel mapuje na RoundlyConsulting\Money\Money: suma je v price v najmenších jednotkách meny (stĺpec decimal(38,0)), kód meny v currency.
use RoundlyConsulting\Money\Money;
$ad->price = Money::ofMajor('15.00', 'EUR');
$ad->price->minor(); // "1500" — a string, never (int)-cast it
$ad->price->toDecimal(); // "15.00"
$ad->price->format('sk'); // formatted for the Slovak locale
$ad->currency; // "EUR"
$ad->price?->add(Money::ofMinor(500, 'EUR')); // money's API; mismatched currencies throw CurrencyMismatch
Advertisement::query()->orderBy('price')->get(); // numeric orderPravidlá
- Priradiť možno len Money|null; čokoľvek iné vyhodí RoundlyConsulting\Money\Exceptions\InvalidMoneyValue.
- Priradenie ceny v inej mene reklame, ktorá už cenu má, vyhodí CurrencyMismatch — ak chcete menu zmeniť zámerne, najprv nastavte currency (UpdateAdvertisement to urobí za vás).
- Zápis null vymaže sumu a currency ponechá.
- PostgreSQL a MySQL uložia všetkých 38 číslic; SQLite je presné len v rozsahu int64, preto tam cast širšie sumy odmietne (InvalidMoneyValue) namiesto tichého uloženia floatu.
- Záložná textová reklama vypíše $ad->price->format() v aktívnom jazyku.
API resources
Cenu vypíšte cez resource balíka money — from() pri reklame bez ceny vráti null:
use RoundlyConsulting\Money\Http\Resources\MoneyResource;
'price' => MoneyResource::from($ad->price),
// {"minor":"1999","decimal":"19.99","currency":"EUR","exponent":2,"formatted":"…"}
// "formatted" follows the active app locale: app()->setLocale('sk') changes itminor je v JSON zámerne reťazec; frontend, ktorý s cenou počíta, číta decimal (alebo BigInt(minor)). formatted sa riadi aktívnym jazykom aplikácie (app()->setLocale()), takže sa mení s jazykom požiadavky — zobrazujte ho, nikdy ho neparsujte. Aritmetiku, formátovanie, meny a zaokrúhľovanie popisuje dokumentácia Money for Laravel.
Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.