NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
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
ScopeVý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

Odoslaní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.