Inštalácia
Pridajte balík. Service provider aj alias fasády Lifecycles sa zaregistrujú automaticky:
composer require roundly-consulting/lifecycle-for-laravelMigrácie vytvárajú polymorfné stĺpce pre subjekt a aktéra. Ak vaše modely (alebo používatelia) používajú kľúče UUID či ULID, nastavte typy kľúčov ešte pred migráciou — všetky subjekty zdieľajú jeden typ kľúča a rovnako aj všetci aktéri:
LIFECYCLE_KEY_TYPE=uuid # your models with a lifecycle: bigint (default), uuid or ulid
LIFECYCLE_ACTOR_KEY_TYPE=bigint # your usersNa veľkosti písmen nezáleží a prázdna hodnota sa považuje za nenastavenú, takže sa číta ako bigint. Akákoľvek iná hodnota vyhodí pri spustení migrácií InvalidConfigurationException z toolkitu, ešte pred vytvorením akejkoľvek tabuľky.
Publikujte a spustite migrácie. Len sa publikujú — balík ich sám nikdy nenačítava — a sú len dopredné:
php artisan vendor:publish --tag="lifecycle-migrations"
php artisan migrateVoliteľne publikujte konfiguračný súbor a preklady (angličtina a slovenčina sú súčasťou balíka):
php artisan vendor:publish --tag="lifecycle-config"
php artisan vendor:publish --tag="lifecycle-translations"Stĺpce životného cyklu
Atribút cyklu je obyčajný reťazcový (alebo celočíselný) stĺpec vo vašej tabuľke; balík pridá vlastné tabuľky pre záznamy stavu, históriu, plány a zámky kvót. Stĺpec pridajte migráciou:
Schema::table('listings', function (Blueprint $table): void {
$table->string('status', 64)->nullable()->index(); // int-backed enum: unsignedSmallInteger
});Predvolená hodnota v databáze nie je potrebná: nový model začína v počiatočnom stave. Stĺpec indexujte spolu so stĺpcami scope kvót, napríklad $table->index(['status', 'user_id']), a model uveďte v lifecycle.subjects, aby ho lifecycle:validate kontroloval.
Naplánovanie sweepu
Ak má niektorý stav TTL alebo plánujete prechody, spúšťajte sweep každú minútu. Čistenie je voliteľné:
// routes/console.php
use Illuminate\Support\Facades\Schedule;
Schedule::command('lifecycle:sweep')->everyMinute();
Schedule::command('lifecycle:prune')->daily();lifecycle:sweep podporuje izoláciu (--isolated zabráni súbežným behom na viacerých serveroch) a aj dva súbežné sweepy sú bezpečné: každý plán sa spustí najviac raz.
Balík zapisuje svoje riadky na vlastnom pripojení každého subjektu a jeden sweep spracuje tabuľky balíka jedného pripojenia. Modely na inom ako predvolenom pripojení potrebujú sweep aj pre toto pripojenie:
// models on another database connection: one sweep per connection
Schedule::command('lifecycle:sweep --database=tenant')->everyMinute();Kontrola inštalácie
php artisan about # the "Lifecycle" section
php artisan lifecycle:validate # every lifecycle of every model in lifecycle.subjectsphp artisan about zobrazí sekciu Lifecycle — typy kľúčov, striktné zápisy, používané modely, frontované sweepy, či je lifecycle:sweep naplánovaný (pre predvolené pripojenie), a čistenie histórie. lifecycle:validate upozorní, keď definícia sweep potrebuje, ale nie je naplánovaný, a overí sweep vlastného pripojenia každého uvedeného modelu. Sweep naplánovaný ako closure alebo job sa rozpozná, ak má názov lifecycle:sweep (->name('lifecycle:sweep')); pri nepomenovanej closure je odpoveď neznáma.
Balík vystavuje publish tagy lifecycle-migrations, lifecycle-config, lifecycle-translations a lifecycle-stubs (stuby pre make:lifecycle).
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.