---
title: "Vyhľadávanie a história aktivít — Tickets for Laravel | Roundly"
description: "Eloquent scopes spoločné pre PHP aj API — stav, priorita, kategória, riešiteľ, polia, dátumy a hľadanie — plus nemenná história aktivít."
url: https://roundly-consulting.com/sk/open-source/navody/tickets-for-laravel/vyhladavanie
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)

# Vyhľadávanie a história aktivít

Obyčajné Eloquent scopes na Ticket. Filtre zoznamu v API sú postavené na nich, takže PHP aj HTTP filtrujú rovnako:

```php
use RoundlyConsulting\Tickets\Enums\StatusCategory;
use RoundlyConsulting\Tickets\Models\Ticket;

Tickets::visibleTo($user)->unresolved()->orderByPriority()->paginate();
Ticket::query()->assignedTo($agent)->withStatusCategory(StatusCategory::Waiting)->get();
Ticket::query()->inCategory($hardware, descendants: true)->overdue()->count();
Ticket::query()->taggedWith('printer', 'vip')->createdFrom(now()->subWeek())->get();
Ticket::query()->search('TCK-42')->first();
```

V kóde, ktorý musí nasledovať výmenu modelu, sa pýtajte cez Support\\TicketModels::ticket()::query().

| Scope | Význam |
| --- | --- |
| `visibleTo(Model $user)` | Tikety, ktoré povoľuje TicketPolicy::view (Tickets::visibleTo()). |
| `assignedTo(Model ...$assignees) / unassigned()` | Polymorfný vzťah na riešiteľa. |
| `requestedBy(Model $requester)` | Polymorfný vzťah na žiadateľa (používateľ alebo TicketGuest). |
| `inProject(?Model $project)` | null = tikety bez projektu. |
| `inCategory(TicketCategory\|int $category, bool $descendants = false)` | Aj s podkategóriami (obmedzené categories.max\_depth). |
| `withStatus(BackedEnum\|string ...$states)` | Presné hodnoty stavov. |
| `withStatusCategory(StatusCategory ...$categories)` | Stavy nakonfigurovaného enumu v týchto kategóriách. |
| `unresolved()` | Open, Active alebo Waiting. |
| `withPriority(BackedEnum\|string ...$priorities)` | Ktorákoľvek z priorít. |
| `taggedWith(string\|TicketTag ...$tags)` | Ktorýkoľvek zo štítkov, podľa slugu alebo modelu. |
| `watchedBy(Model $watcher)` | Tikety, ktoré model sleduje. |
| `whereField(string $key, mixed $value) / whereFieldBetween(string $key, mixed $from, mixed $to)` | Hodnoty vlastných polí prevedené na typ poľa; hranica rozsahu null je otvorená. Neznámy, šifrovaný alebo multiselect kľúč vyhodí UnknownTicketFieldException; rozsah berie len polia number, decimal, date a datetime. |
| `dueBefore / dueAfter(CarbonInterface), dueFrom / dueTo, overdue()` | Before / after sú exkluzívne, from / to inkluzívne; overdue = po termíne a nevyriešené. |
| `createdFrom / createdTo(CarbonInterface)` | Inkluzívne. |
| `viaChannel(string ...$channels)` | Vstupný kanál. |
| `search(string $term)` | Presne číslo tiketu, alebo LIKE v predmete a popise (zástupné znaky sa berú doslova). |
| `merged(bool $merged = true)` | merged\_into\_id nastavené / nenastavené. |
| `orderByPriority(string $direction = 'desc')` | Podľa váh enumu; neznáma uložená hodnota sa radí ako 0. |

## História aktivít

Každá zmena — stav, priorita, riešiteľ, termín, štítky, polia, zlúčenia, úpravy a mazania správ — sa zapíše do histórie, do ktorej sa len pripisuje, v transakcii každej akcie (zmeny stavu v transakcii prechodu lifecycle):

```php
Tickets::for($ticket)->activity();                 // public entries, oldest first — safe for a requester-facing page
Tickets::for($ticket)->activity(internal: true);   // every entry, for agents
```

| Typ | Viditeľnosť |
| --- | --- |
| `created, status_changed, priority_changed, category_changed, assigned, unassigned, due_changed, attachment_added, attachment_removed, requester_changed, overdue` | verejné |
| `merged, merged_from` | verejné, rátajú len zverejnené správy (comments), bez reason — plus interný záznam rovnakého typu so všetkými správami a dôvodom, ak sa líšia |
| `replied` | verejné — interné pre odpoveď, ktorú zadržala moderácia hostiteľa (properties.held: true, plus properties.transition, ak žiadala prechod, ktorý nedostala) |
| `comment_edited, comment_deleted` | viditeľné ako samotná správa: verejné pre zverejnenú verejnú odpoveď, interné pre poznámku či zadržanú odpoveď; properties comment (id) a role — nikdy text |
| `updated` | verejné pre subject / description; zmena meta hostiteľa je samostatný interný záznam |
| `note_added, fields_changed, tagged, untagged, linked, unlinked, watcher_added, watcher_removed, guest_access_revoked, deleted, restored` | interné (len pre agentov) |

Záznamy nesú aktéra, príznak is\_system, viditeľnosť a properties — id, kľúče, from/to; nikdy text poznámky ani šifrovanú hodnotu. Úprava či zmazanie vyhodí ActivityIsAppendOnlyException a force delete tiketu sa prenesie kaskádou. Pri vypnutom tickets.activity.enabled sa nezapíše nič a endpoint vráti \[\]. API záznamy filtruje podľa roly.

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