---
title: "Štítky tenantov — Tags for Laravel | Roundly"
description: "Štítky, ktoré patria tímu, klientovi či projektu, vedľa spoločných globálnych — katalógy s rozsahom, prísne oddelené zápisy, typy len globálne a dotazy."
url: https://roundly-consulting.com/sk/open-source/navody/tags-for-laravel/stitky-tenantov
language: sk
---

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

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

# Štítky tenantov

Štítok je globálny alebo patrí jednému modelu rozsahu — tímu, tenantovi, projektu. Model so štítkami určí svoj rozsah cez tagScope(); potom vidí štítky svojho rozsahu aj globálne a voľný názov napísaný na ňom sa vytvorí v jeho rozsahu:

```php
// Free-form tags typed on a task belong to its team (Task::tagScope() returns $this->team)
$task->attachTags('printer', 'label');     // the team's "printer", else the global one, else a new team tag

// Catalog handles: reads see the scope's tags plus the global ones…
$labels = Tags::type('label')->within($team);
$labels->all();
$labels->suggest('pri');

// …or only the scope's
Tags::type('label')->within($team, includeGlobal: false)->all();

// Writes match the handle's scope exactly
$labels->make('Urgent')->create();                     // a team tag
Tags::type('label')->make('Urgent')->create();         // a global tag, for every team
$labels->delete($globalTag);                           // TagScopeMismatchException — never touches a global tag

// A tag of another scope is refused on a model, exactly like a missing one
$task->attachTags($tagOfAnotherTeam, 'label');         // TagScopeMismatchException (code tag_not_found)
```

- Reťazec sa vyhodnotí najprv v rozsahu modelu, potom globálne. Rovnaký názov môže existovať ako štítok tímu aj ako globálny štítok; pre modely tímu vyhrá štítok tímu.
- Unikátnosť platí pre typ a rozsah, takže dva tímy môžu mať každý vlastné označenie printer.
- Zápisy cez handle katalógu presne zodpovedajú jeho rozsahu: handle within($team) upravuje, presúva a maže len štítky tímu a nikdy globálny štítok, ktorý vidia všetci tenanti; handle bez rozsahu zapisuje len globálne štítky. Štítok iného rozsahu vyhodí TagScopeMismatchException.
- Štítok či kľúč iného rozsahu odpovie presne ako chýbajúci — v každej metóde, v TagsRule aj v API — takže žiadna odpoveď neodlíši cudzí štítok od neexistujúceho.
- Model rozsahu musí byť uložený a mať kľúč typu tags.key\_type. Jeho interný kľúč rozsahu tvorí morph trieda a kľúč s najviac 300 znakmi — pre dlhý názov triedy zaregistrujte krátky morph alias.

## Typy len globálne

Niektoré druhy štítkov majú byť jedným zoznamom pre všetkých — krajina, hlavná kategória:

```php
Tags::define('country')->globalOnly();       // one shared list for every tenant

$venue->attachTags('Austria', 'country');          // looked up and created globally, tagScope() ignored
Tags::type('country')->within($team)->make('Austria')->create();   // InvalidTagException: always global
```

## Dotazy s rozsahom

```php
// Strings resolve in every scope of the type, unless within: narrows them to a scope plus global
Task::withAnyTags(['printer'], 'label', within: $team)->get();

Tag::query()->ofType('label')->within($team)->get();          // the team's tags and the global ones
Tag::query()->ofType('label')->within($team, false)->get();   // the team's only
Tag::query()->ofType('label')->global()->get();               // global only
```

V query scopes reťazce zodpovedajú pomenovanému štítku vo všetkých rozsahoch typu — v každom rozsahu podľa jeho prvého zhodného jazyka reťaze —, pokiaľ ich within: nezúži — modely totiž zužuje už váš vlastný dotaz. Modely a kľúče štítkov zodpovedajú presne tým štítkom, ktorými sú.

## Keď sa rozsah modelu zmení

Priradenia si ponechajú štítky, na ktoré ukazujú. Model, ktorému sa tagScope() zmení, si štítky starého rozsahu ponechá, kým ich najbližší sync daného typu neodstráni; tags:doctor takéto priradenia spočíta ako upozornenie.

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