---
title: "Inštalácia — Events for Laravel | Roundly"
description: "Inštalácia cez Composer, events:install a migrácie, typy kľúčov a názvy tabuliek, traity modelov a naplánovanie dvoch sweepov."
url: https://roundly-consulting.com/sk/open-source/navody/events-for-laravel/instalacia
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Events for Laravel](https://roundly-consulting.com/sk/open-source/navody/events-for-laravel.md)

# Inštalácia

Pridajte balík, spustite jeho inštalátor a potom migrácie. Service provider sa objaví automaticky spolu s providermi balíkov Roundly, na ktorých stavia. Fasáda nemá globálny alias — importujte RoundlyConsulting\\Events\\Facades\\Events:

```bash
composer require roundly-consulting/events-for-laravel
php artisan events:install
php artisan migrate
```

events:install odmietne pokračovať, kým existuje niektorá z nakonfigurovaných tabuliek — events je v aplikáciách bežný názov tabuľky (analytika, event sourcing) — a uvedie kľúč events.tables.\*, ktorý treba zmeniť. Inak publikuje events-config a migrácie lifecycle-migrations, tags-migrations, media-migrations a events-migrations (pri zapnutej histórii slugov aj sluggable-migrations), už publikované súbory ponechá a vypíše typy kľúčov vedľa seba spolu s ďalšími krokmi.

## 1\. Pred migráciou ujasnite typy kľúčov

Migrácie podľa dvoch typov kľúčov volia typy stĺpcov. Pri bigint id používateľov vyhovujú predvolené hodnoty. Pri kľúčoch UUID alebo ULID ich nastavte ešte pred php artisan migrate:

```bash
EVENTS_PRIMARY_KEY_TYPE=uuid   # events and every column pointing at one (= lifecycle.key_type, tags.key_type)
EVENTS_KEY_TYPE=uuid           # organizers, attendees, co-hosts, invitees, actors (= your users)
LIFECYCLE_KEY_TYPE=uuid
LIFECYCLE_ACTOR_KEY_TYPE=uuid
TAGS_KEY_TYPE=uuid
```

| Konfigurácia | Env | Určuje | Musí sa rovnať |
| --- | --- | --- | --- |
| `events.primary_key_type` | `EVENTS_PRIMARY_KEY_TYPE` | events.id a každý stĺpec, ktorý ukazuje na podujatie (subjekty lifecycle, označené modely v tags, vlastníci médií, história slugov) | lifecycle.key\_type, tags.key\_type (+ sluggable.key\_type with slug history) |
| `events.key_type` | `EVENTS_KEY_TYPE` | každý stĺpec, ktorý ukazuje na vaše modely: organizátor, účastník, spoluorganizátor, pozvaný, pozývajúci, vlastník miesta konania, added\_by, checked\_in\_by | typ kľúča vašich používateľov a lifecycle.actor\_key\_type |

Pri events.tags.scope = organizer je organizátor rozsahom štítkov, preto sa events.key\_type musí rovnať aj tags.key\_type. Model, ktorého kľúč nesedí, sa odmietne ešte pred akýmkoľvek SQL s odkazom na events.key\_type — PostgreSQL by inak odpovedal surovou chybou „invalid input syntax for type bigint“ — a events:doctor ohlási každý nesúlad.

## 2\. Ak treba, premenujte tabuľky

Názov každej tabuľky je konfigurovateľný. Ak už vaša aplikácia tabuľku events má, premenujte ich pred inštaláciou:

```php
// config/events.php — set before events:install and php artisan migrate
'tables' => [
    'events' => 'meetup_events',            // your app already has an events table
    'venues' => 'event_venues',
    'tiers' => 'event_admission_tiers',
    'rsvps' => 'event_rsvps',
    'hosts' => 'event_hosts',
    'invitations' => 'event_invitations',
    'reminder_deliveries' => 'event_reminder_deliveries',
],
```

## 3\. Pridajte traity do modelov

```php
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use RoundlyConsulting\Events\Concerns\AttendsEvents;
use RoundlyConsulting\Events\Concerns\OrganizesEvents;
use RoundlyConsulting\Events\Contracts\Organizer;

class User extends Authenticatable implements Organizer
{
    use AttendsEvents;     // $user->rsvp($event)->going(), isGoingTo(), eventFeed(), seats freed on deletion
    use Notifiable;        // notices
    use OrganizesEvents;   // the Organizer contract's defaults
}
```

AttendsEvents umožní modelu odpovedať na podujatia a čítať ich, OrganizesEvents dodá predvolené hodnoty kontraktu Organizer a Notifiable prijíma notifikácie. Potom uveďte modely, na ktoré sa API smie odvolávať, cez alias — tímom ako organizátorom sa venuje stránka Organizátori, spoluorganizátori a pozvánky:

```php
// config/events.php — the aliases the JSON API uses, never class names
'organizers' => [
    'user' => App\Models\User::class,
    'team' => App\Models\Team::class,      // list every organizer class, teams included
],

'attendees' => [
    'user' => App\Models\User::class,
],
```

## 4\. Naplánujte sweepy

```php
// 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
```

Do plánovača sa za vás nič nepridá. Bez events:sweep vypršia rezervované miesta až pri ďalšom zápise do ich podujatia a neodíde žiadna pripomienka; bez lifecycle:sweep sa skončené podujatia nikdy samy neukončia.

## 5\. Skontrolujte inštaláciu

```bash
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}]
```

Doctor spustite po inštalácii a po každej zmene konfigurácie — zoznam kontrol nájdete na stránke Artisan príkazy.

## Bez inštalátora

```bash
php artisan vendor:publish --tag=events-config --tag=lifecycle-migrations \
    --tag=tags-migrations --tag=media-migrations --tag=events-migrations
```

Migrácie sa len publikujú — balík ich nikdy nenačíta sám — a časovú značku dostanú pri publikovaní.

| Tag | Kam sa publikuje |
| --- | --- |
| `events-config` | `config/events.php` |
| `events-migrations` | Sedem migrácií, …\_0001\_create\_event\_venues\_table.php až …\_0007\_create\_event\_reminder\_deliveries\_table.php — s odstupom jednej sekundy; opätovné publikovanie trafí tie isté súbory. |
| `events-translations` | `lang/vendor/events/{en,sk}/*.php` |
| `events-views` | `resources/views/vendor/events/json-ld.blade.php` |
| `events-routes` | routes/events.php — keď existuje, načíta sa namiesto súboru balíka. |

```bash
php artisan vendor:publish --tag=events-translations   # lang/vendor/events/{en,sk}/*.php
php artisan vendor:publish --tag=events-views          # resources/views/vendor/events/json-ld.blade.php
php artisan vendor:publish --tag=events-routes         # routes/events.php — loads instead of the package's
```

## Jazyky a preklady

Názvy, popisy, názvy typov vstupeniek a miest konania aj slugy podujatí sú pre každý jazyk zvlášť cez translatable-for-laravel: zadajte mapu jazykov (\['en' => 'Jazz Night', 'sk' => 'Jazzový večer'\]) alebo reťazec v aktuálnom jazyku; čítanie ide podľa aktuálneho jazyka a potom podľa záložného reťazca. Jazyky aplikácie musia byť v translatable.locales (predvolene en, sk) — inak označovanie podľa názvu vyhodí invalid\_tag. Vlastné texty balíka sú v angličtine a slovenčine s rovnakými kľúčmi a ich menný priestor je events::. Súbory:

| Súbor | Obsahuje |
| --- | --- |
| `enums.php` | Popisy enumov (label()). |
| `messages.php` | Každá správa výnimky a zamietnutia — message v API. |
| `notifications.php` | Predmety, oslovenia, texty a tlačidlá notifikácií. |
| `validation.php` | Názvy polí API vo validačných správach. |
| `tags.php` | Popisy dvoch typov štítkov. |
| `feeds.php` | Texty v kalendári — riadok s pripojením, názov osobného feedu. |

Ak chcete zmeniť niektorý riadok alebo pridať jazyk, publikujte ich cez --tag=events-translations.

## php artisan about

```bash
php artisan about --only=events
```

Sekcia Events ukáže podobu inštalácie — nikdy žiadne tajomstvo:

| Riadok | Príklad |
| --- | --- |
| Key type | `bigint (events), bigint (people)` |
| Lifecycle | `EventLifecycle` |
| Routes | `ON / OFF` |
| Notifications | `ON (mail, database) / OFF` |
| Reminders | `P1D, PT2H / NONE` |
| Payments | `NoPaymentCollector` |
| Geocoding | `ON / OFF` |
| Slug history | `ON / OFF` |

## 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](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

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

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/events-for-laravel.md)
