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

Artisan príkazy

PríkazČo robí
events:installOdmietne, kým existuje niektorá nakonfigurovaná tabuľka (s názvom kľúča events.tables.*); publikuje konfiguráciu a migrácie, vypíše typy kľúčov vedľa seba a ďalšie kroky.
events:doctor {--counts} {--json}Skontroluje inštaláciu; pri chybe skončí nenulovým kódom, samotné varovania skončia s 0.
events:sweep {--limit=} {--chunk=100}Ukončí prepadnuté rezervácie, posunie čakacie listiny, odošle splatné pripomienky — plánujte každú minútu.
events:repair {--counts} {--orphans} {--dry-run}Prepočíta počítadlá / uvoľní osirelé RSVP — bez prepínača oboje.
events:geocode {--missing} {--venue=} {--force} {--chunk=100}Geokóduje miesta konania z ich adries.

Provider príkazy zaregistruje, no do plánovača nepridá nič:

// routes/console.php
use Illuminate\Support\Facades\Schedule;

Schedule::command('events:sweep')->everyMinute();      // held seats expire, waitlists move up, reminders go out
Schedule::command('lifecycle:sweep')->everyMinute();   // finished events complete at their end

events:install

  • Skončí s kódom 1, kým existuje niektorá nakonfigurovaná tabuľka, a uvedie kľúč events.tables.*, ktorý treba zmeniť.
  • Publikuje events-config, lifecycle-migrations, tags-migrations, media-migrations a events-migrations (pri zapnutej histórii slugov aj sluggable-migrations); už publikované súbory ponechá.
  • Vypíše vedľa seba events.primary_key_type, lifecycle.key_type, tags.key_type, events.key_type a lifecycle.actor_key_type a potom ďalšie kroky: migrate, traity modelov, dva riadky plánovača, collector platieb a events:doctor.

events:doctor

php artisan events:doctor
php artisan events:doctor --counts     # also compare every event's counters with a recount
php artisan events:doctor --json       # [{severity, check, message}]

Pri nájdenej chybe skončí nenulovým kódom; samotné varovania skončia s 0. Každé zistenie vypíše ako [check] message (alebo „Everything looks right.“) a --json vypíše [{severity, check, message}]:

KontrolaZávažnosťNájde
key_typeschybalifecycle.key_type / tags.key_type ≠ events.primary_key_type; lifecycle.actor_key_type ≠ events.key_type; štítky pre organizátora pri tags.key_type ≠ events.key_type; história slugov pri sluggable.key_type ≠ events.primary_key_type.
lifecyclechybaNakonfigurovaný životný cyklus porušuje kontrakt (počiatočný stav nie je koncept, stav bez fázy, nedá sa zostaviť).
tag_typeschyba / varovanieTypy štítkov chýbajú alebo prepísanie povolí viac ako jednu kategóriu · prepísanie urobí kategóriu nekurátorovanú, neglobálnu či nehierarchickú, štítky nesúkromné alebo z niektorého typu voľný strom.
tableschybaNakonfigurovaná tabuľka chýba; história slugov zapnutá bez slug_history.
distancechybaDotaz na vzdialenosť zlyhá na predvolenom pripojení.
policy, venue_policy, resources, paymentschybaNakonfigurovaná trieda chýba alebo nie je implementáciou; payments aj rezervácia, ktorá nie je kladné trvanie.
reminderschybaPosuny mimo PT5M–P31D, viac ako päť alebo nie trvania; nečitateľné max_lateness.
paymentsvarovaniePlatené typy vstupeniek, prázdny collector a žiadny listener RsvpHeld.
urls · routesvarovanieevents.urls.event je prázdne · API je zapnuté s prázdnym auth_middleware.
notificationsvarovanieKanál database bez tabuľky notifications; typy účastníkov, ktorým nemožno posielať notifikácie.
timezones · organizers · postponedvarovaniePodujatia v inom časovom pásme ako ich miesto konania · uložený organizer_type mimo events.organizers · odložené viac ako 90 dní.
countersvarovanieS --counts: počítadlá, ktoré sa odchýlili od prepočtu.

events:sweep

php artisan events:sweep                  # expire lapsed holds, move waitlists up, send due reminders
php artisan events:sweep --limit=500      # at most this many events per part (holds, reminders)
php artisan events:sweep --chunk=100      # events per batch

Rezervácie vypršia pre každé podujatie pod jeho zámkom, vrátane zmazaných podujatí; nasleduje posúvanie; pripomienky sa nárokujú raz — len pre naplánované alebo presunuté podujatia, ktoré sa začínajú v najbližších 32 dňoch. --limit obmedzí podujatia v každej časti (rezervácie, pripomienky). Príkaz vypíše štyri počty.

events:repair

php artisan events:repair                 # both: counters and orphaned RSVPs
php artisan events:repair --counts        # recompute every event's counters under its row lock
php artisan events:repair --orphans       # release the RSVPs of attendees whose row is gone
php artisan events:repair --dry-run       # report without writing
  • --counts prepočíta počítadlá každého podujatia pod zámkom jeho riadku — odchýlka znamená chybu alebo ručný zápis.
  • --orphans uvoľní RSVP účastníkov, ktorých riadok už neexistuje — hromadné mazanie nespúšťa udalosti modelu: miesta sa vrátia, čakacia listina sa posunie, riadky sa odstránia, jedným dotazom na typ účastníka.
  • --dry-run len vypíše výsledok bez zápisu. Príkaz vypíše tri počty, pri skúšobnom behu s označením, že sa nič nezapísalo.

events:geocode

php artisan events:geocode                 # venues without coordinates (--missing, the default)
php artisan events:geocode --venue=7       # one venue (skipped when it has coordinates, unless --force)
php artisan events:geocode --force         # every venue again
php artisan events:geocode --chunk=200     # venues per batch (default 100)

Miesta konania sa čítajú podľa id, po --chunk naraz; zlyhané miesto sa započíta ako nenájdené s varovaním, nikdy nie ako fatálna chyba. Príkaz vypíše Geocoded a Not found a skončí s 0.

Z PHP

use RoundlyConsulting\Events\DataTransferObjects\RepairOptions;
use RoundlyConsulting\Events\DataTransferObjects\SweepOptions;

$swept = Events::sweep(new SweepOptions(limit: null, chunk: 100));
// SweepResult {events, expiredHolds, promoted, reminders, notified}

$report = Events::repair(new RepairOptions(counts: true, orphans: true, dryRun: false, chunk: 100));
// RepairReport {eventsChecked, countersFixed, orphansReleased, dryRun}

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.