---
title: "Vyhľadávanie modelov — Tags for Laravel | Roundly"
description: "withAnyTags, withAllTags, withoutTags a withTagsOf — s potomkami a rozsahmi — plus opačný vzťah taggedModels()."
url: https://roundly-consulting.com/sk/open-source/navody/tags-for-laravel/vyhladavanie
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)

# Vyhľadávanie modelov

Štyri query scopes na každom modeli so štítkami, ľubovoľne kombinovateľné so zvyškom dotazu — a tá istá implementácia stojí za TagsFilter, takže PHP aj HTTP filtrujú rovnako:

```php
// Music, Jazz, Bebop, … — descendants: matches every tag below a hierarchical one
$page = Concert::withAnyTags(['music'], 'genre', descendants: true)
    ->withAllTags(['outdoor', 'free'], 'label')
    ->withoutTags(['sold-out'], 'label')
    ->paginate();

Concert::withoutTags(type: 'genre')->count();      // concerts with no category yet
Concert::withoutTags()->count();                   // concerts with no tag at all
Concert::withTagsOf('label')->count();             // concerts with at least one label

Concert::withAnyTags([$jazz, $rock])->get();       // models carry their own type
Concert::withAllTags(['live', 'unknown'], 'label')->get();   // an unknown string matches nothing
```

| Scope | Význam |
| --- | --- |
| `withAnyTags($tags, $type = null, descendants: false, within: null)` | Modely s aspoň jedným zo štítkov. |
| `withAllTags($tags, $type = null, descendants: false, within: null)` | Modely so všetkými — každý splnený sám sebou alebo, s descendants, štítkom pod ním. Reťazec, ktorý neoznačuje žiadny štítok, nevyhovie žiadnemu modelu. |
| `withoutTags($tags = [], $type = null, descendants: false, within: null)` | Modely bez žiadneho z nich; bez štítkov modely bez štítku daného typu — alebo bez akéhokoľvek štítku, ak typ chýba. |
| `withTagsOf($type)` | Modely s aspoň jedným štítkom daného typu. |

- Vstupom sú modely štítkov, kľúče alebo reťazce, rovnako ako pri označovaní. Reťazce sa vyhodnocujú bez vytvárania; neznámy reťazec nevyhovie ničomu — vo withAllTags to znamená žiadny model.
- Typ zúži reťazce na tento typ a zhodu na jeho priradenia. Bez typu reťazce použijú predvolený typ a modely aj kľúče nesú vlastný typ.
- Každý scope je whereIn nad poddotazom priradení: bez joinu, bez duplicitných riadkov, bezpečný na stránkovanie.
- Spojovacia tabuľka a model musia zdieľať jedno databázové spojenie — tags:doctor upozorní, ak je model inde.

## Od štítku k jeho modelom

$tag->taggedModels(Concert::class) je opačný vzťah, rovnako len na čítanie ako tags(); $tag->taggings() vráti samotné riadky spojovacej tabuľky.

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