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

Import a export

Nastavenia prenesiete medzi prostrediami alebo dodáte predvolené hodnoty cez fasádu (prípadne vložený OptionsManager). Príkazy options:export a options:import volajú ten istý manager a prácu pod ním robia ExportOptionsAction a ImportOptionsAction (pozri DI a akcie):

use RoundlyConsulting\Options\Facades\Options;

Options::export();                   // list<OptionPayload>: every stored option, global and owned
Options::export($tenant);            // one owner's options
Options::export(globalOnly: true);   // only the global ones
Options::for($tenant)->export();     // one scope; Options::for(null)->export() = global only

$json = Options::exportJson($tenant); // the same, as a JSON array of rows

$count = Options::import($json);                                   // JSON string — upsert, returns the count
$count = Options::import([['key' => 'theme', 'value' => 'dark']]); // decoded rows (owner_type / owner_id optional)
$count = Options::import($payloads);                               // list<OptionPayload>; rows and payloads may be mixed

Formát dát

exportJson() aj options:export vytvoria JSON pole riadkov OptionPayload:

[
  { "key": "theme", "value": "dark", "owner_type": null, "owner_id": null },
  { "key": "theme", "value": "light", "owner_type": "App\\Models\\User", "owner_id": 5 }
]

Správanie

  • Hodnoty putujú presne tak, ako sú uložené — serializované a pri šifrovaných nastaveniach stále zašifrované, takže cieľová aplikácia ich prečíta len s rovnakým APP_KEY.
  • Import vkladá alebo aktualizuje podľa key, owner_type a owner_id, takže opakovaný import toho istého súboru je idempotentný. Soft-zmazaný riadok zabudnutého nastavenia sa obnoví, nevznikne duplikát.
  • Import zapisuje riadky priamo: bez validácie, castov, eventov, observerov aj autorizácie.
  • import() vráti počet riadkov a každému importovanému kľúču zahodí záznam v pamäti requestu aj v trvalej cache, takže ďalšie čítanie už vráti importovanú hodnotu.
  • owner_id sa riadi podľa options.key_type — pri vlastníkoch s bigint je to int, pri UUID či ULID reťazec. Riadok, ktorý má len owner_type alebo len owner_id, sa importuje ako globálny.
  • Poškodený JSON, JSON so skalárnou hodnotou, riadok, ktorý nie je pole, alebo riadok bez textového key vyhodí InvalidOptionPayload.
  • Pod Options::fake() čítajú export() a exportJson() z pamäte — tá drží to, čo by držala databáza: surové reťazce, pri šifrovanom nastavení šifrový text — a import() sa zaznamená (assertImported()) a nahrá do nej.

Z príkazového riadku

php artisan options:export --path=storage/options.json
php artisan options:export --owner="App\Models\User" --owner-id=5

php artisan options:import storage/options.json
php artisan options:clear-cache

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.