---
title: "Zakladanie a úprava tiketov — Tickets for Laravel | Roundly"
description: "Zakladajte tikety builderom alebo cez CreateTicketData, doplňte predvolené hodnoty z kategórií, potom ich upravujte, presúvajte, odovzdávajte a mažte."
url: https://roundly-consulting.com/sk/open-source/navody/tickets-for-laravel/zakladanie-tiketov
language: sk
---

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

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

# Zakladanie a úprava tiketov

Tickets::make() vráti TicketBuilder; create() tiket založí a vráti ho. Povinný je len predmet a žiadateľ (model vašej aplikácie alebo polia hosťa):

```php
$ticket = Tickets::make()
    ->subject('Printer on floor 3 is jammed')               // required
    ->description('Paper jam error E-102.')
    ->requester($user)                                      // a host model…
    ->guest(['name' => 'Jo', 'email' => 'jo@acme.test'])    // …or guest fields (GuestData|array)
    ->category($hardware)                                   // model, id or null
    ->priority('high')                                      // value or enum case
    ->project($helpdesk)                                    // a TicketProject
    ->assignee($agent)
    ->due(now()->addDay())
    ->channel('web')
    ->fields(['asset_tag' => 'PRN-0042'])
    ->tags(['printer'])                                     // names or TicketTag models
    ->watchers($colleague)
    ->attach($request->file('photo'))                       // UploadedFile or a local path — never user input as a path
    ->meta(['crm_id' => 'C-1'])                             // host-owned metadata; top-level keys merge
    ->by($agent)                                            // the actor (default: the auth user, with actor.from_auth)
    ->create();
```

asSystem() ho založí bez aktéra; data() namiesto založenia vráti CreateTicketData. Neaktívna kategória sa pre nový tiket odmietne a kanál musí byť jeden z tickets.channels. Z PHP prílohy prijímajú uploady alebo lokálne cesty — vstup od používateľa nikdy neodovzdávajte ako cestu.

## Predvolené hodnoty pri založení

- Hodnoty, ktoré volajúci vynechá, sa doplnia raz, pri založení: z najbližšej nadradenej kategórie, ktorá ich nastavuje, potom z konfigurácie — priorita (tickets.priority.default), riešiteľ (Contracts\\AssignmentStrategy), termín (Contracts\\DueDateResolver) a kanál (tickets.default\_channel). Doplnia sa aj predvolené hodnoty vlastných polí.
- Každý kontrakt vidí uložený tiket: riešiteľ a termín sa vyberú hneď po vložení riadku, v tej istej transakcii — tiket už má kľúč, číslo, poradové číslo a počiatočný stav, žiadateľa, projekt, kategóriu, prioritu a kanál, ešte však nie hodnoty vlastných polí, štítky, sledujúcich ani prílohy.
- Neskoršia zmena kategórie tiketu nič znova neuplatní.

## Podoba s DTO

```php
use RoundlyConsulting\Tickets\DataTransferObjects\CreateTicketData;

$ticket = Tickets::create(new CreateTicketData(
    subject: 'Printer on floor 3 is jammed',
    requester: $customer,
    category: $hardware,
    priority: 'high',
    channel: 'web',
    fields: ['asset_tag' => 'PRN-0042'],
));
```

## Zo žiadateľa alebo projektu

```php
// Concerns\RequestsTickets on your user model — the requester is set
$ticket = $user->openTicket()->subject('VPN drops every hour')->create();

// Concerns\HasTickets on your project model — numbered in the project's sequence
$ticket = $project->openTicket()->subject('…')->requester($user)->create();   // SUP-1
```

## Vyhľadanie tiketov

```php
Tickets::find('SUP-42');                        // ?Ticket — live tickets only
Tickets::find('SUP-42', withTrashed: true);     // a soft-deleted one too
Tickets::findOrFail('SUP-42');                  // TicketNotFoundException otherwise
Tickets::for('SUP-42');                         // a handle; an unknown or soft-deleted reference throws
```

## Úprava tiketu

```php
use RoundlyConsulting\Tickets\DataTransferObjects\UpdateTicketData;

// Only what is given changes; null clears a nullable value
Tickets::for($ticket)->by($agent)->update(new UpdateTicketData(subject: 'Printer on floor 3 jams on A3', description: null));

Tickets::for($ticket)->by($agent)->prioritize('urgent');         // TicketPriorityChanged
Tickets::for($ticket)->by($agent)->categorize($printers);        // TicketCategoryChanged; defaults are not re-applied
Tickets::for($ticket)->by($agent)->changeRequester($colleague);  // a model or GuestData
```

- Polia UpdateTicketData sú predvolene Support\\Optional (nezadané), takže sa zmení len to, čo odovzdáte, a null môže zrušiť hodnotu, ktorá je voliteľná. TicketUpdated sa spustí so zmenenými kľúčmi (subject, description, meta).
- categorize() znova neuplatní predvolené hodnoty kategórie, novo povinné pole cieľovej kategórie však potrebuje hodnotu.
- changeRequester() tiket predošlému žiadateľovi odoberie: jeho automatické sledovanie sa potichu odstráni (sledovanie, ktoré agent pridal zámerne, zostane), a ak bol predošlý žiadateľ hosť, všetky odkazy pre hostí k tiketu sa zneplatnia (GuestAccessRevoked).
- Opätovné nastavenie rovnakej priority nespustí nič.

## Mazanie a obnovenie

```php
Tickets::for($ticket)->by($manager)->delete();                               // soft delete
Tickets::for(Tickets::findOrFail('SUP-42', withTrashed: true))->restore();   // bring it back
```

Soft-deleted tiket si ponechá číslo a každá jeho zmena vyhodí TicketTrashedException, kým ho neobnovíte. V API vyžaduje mazanie a obnovenie oprávnenie manage u agenta pre daný tiket (pozrite Policy a rozsah agentov).

## Aktér

by($actor) pripíše nasledujúce volania aktérovi; by(null) použije prihláseného používateľa (tickets.actor.from\_auth na tickets.actor.guard); asSystem() znamená nikoho. Aktérovi sa pripisujú záznamy aktivít, udalosti a notifikácie a podľa neho posudzujú doménové pravidlá — rolu agenta, žiadateľa či účastníka.

## 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/tickets-for-laravel.md)
