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

Pridajte balík. Service provider aj alias fasády Lifecycles sa zaregistrujú automaticky:

composer require roundly-consulting/lifecycle-for-laravel

Migrá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 users

Na 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 migrate

Voliteľ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.subjects

php 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 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.