NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Money for Laravel

Príkazy, eventy a plánovanie

PríkazÚčel
money:currencies {--iso} {--custom} {--code=*}Vypíše register: kód, číselný kód, exponent, symbol, názov a pôvod.
money:rates:refresh {source=ecb} {--feed=daily} {--from=} {--to=} {--queue}Stiahne kurzy do tabuľky. --feed je daily, recent alebo history; --queue odošle unikátny job; podporuje --isolated.
money:rates:prune {--before=} {--keep-days=} {--include-manual} {--pretend}Zmaže staré kurzy. Jedna hranica je povinná; manuálne riadky zostanú bez --include-manual; --pretend len spočíta.
money:convert {amount} {from} {to} {--date=} {--driver=}Prevedie sumu a vypíše kurz, zdroj, dátum a výsledok.
php artisan money:currencies --custom

php artisan money:rates:refresh                     # ECB daily feed into the rates table
php artisan money:rates:refresh ecb --feed=recent   # the last 90 days
php artisan money:rates:refresh ecb --feed=history --from=2020-01-01 --to=2020-12-31
php artisan money:rates:refresh --queue             # dispatch a unique queued job instead
php artisan money:rates:refresh --isolated          # keep overlapping runs out

php artisan money:rates:prune --keep-days=365 --pretend   # only count
php artisan money:rates:prune --before=2024-01-01 --include-manual

php artisan money:convert 19.99 EUR USD
php artisan money:convert 19.99 EUR USD --date=2026-09-01 --driver=database

Plánovaná aktualizácia

Pri MONEY_EXCHANGE_SCHEDULE=true provider naplánuje money:rates:refresh podľa exchange.refresh.cron — 30 16 * * 1-5 v Europe/Berlin, tesne po zverejnení kurzov ECB okolo 16:00 SEČ — s withoutOverlapping() a onOneServer(). Plánovač vašej aplikácie musí bežať. Predvolene je vypnutá.

Aktualizácia cez frontu

use RoundlyConsulting\Money\Enums\EcbFeed;
use RoundlyConsulting\Money\Facades\Exchange;
use RoundlyConsulting\Money\Jobs\RefreshExchangeRates;

Exchange::rates()->refreshLater(feed: EcbFeed::Recent);   // queue the refresh

// the same job, dispatched yourself: source, feed, ?from, ?to (Y-m-d)
dispatch(new RefreshExchangeRates('ecb', 'recent'));

refreshLater() odošle job RefreshExchangeRates, ktorý je unikátny pre zdroj a feed počas desiatich minút a drží len skalárne hodnoty.

Aktualizácia a čistenie z kódu

use RoundlyConsulting\Money\Enums\EcbFeed;
use RoundlyConsulting\Money\Facades\Exchange;

$result = Exchange::rates()->refresh('ecb', EcbFeed::Recent);   // RefreshResult
$result->stored;                   // rows written
$result->skippedManual;            // manual rows left untouched
$result->skippedUnknownCurrency;   // feed currencies the registry does not know
$result->latestDate;               // ?CarbonImmutable

$deleted = Exchange::rates()->prune(now()->subYear());          // int

Aktualizácia predvolene pokrýva posledných 7 dní (denný feed), 90 dní (recent) alebo všetko od roku 1999 (history). Neúspešná aktualizácia nikdy nemaže riadky. Prune vráti počet zmazaných — pri pretend spočítaných — riadkov. Akcie za týmito volaniami popisuje sekcia DI a akcie.

Eventy

use Illuminate\Support\Facades\Event;
use RoundlyConsulting\Money\Events\ExchangeRatesRefreshed;
use RoundlyConsulting\Money\Events\ExchangeRatesRefreshFailed;

Event::listen(function (ExchangeRatesRefreshed $event) {
    logger()->info('Exchange rates refreshed', [
        'source' => $event->result->source,
        'stored' => $event->result->stored,
        'latest' => $event->result->latestDate?->toDateString(),
    ]);
});

Event::listen(function (ExchangeRatesRefreshFailed $event) {
    // alert your team: $event->source, $event->message — existing rows are untouched
});
  • ExchangeRatesRefreshed — RefreshResult $result: source, stored, skippedManual, skippedUnknownCurrency, latestDate.
  • ExchangeRatesRefreshFailed — string $source a string $message, spustí sa pred opätovným vyhodením výnimky. Sem napojte upozornenia.

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 kryptomien

Odoslaní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.