Všetky balíky
Tags for Laravel
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:
// 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 kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
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.