zing/laravel-eloquent-tags
Add tags to any Eloquent model in Laravel with a simple trait. Store, attach, detach, and query tags through clean relationships, making it easy to organize, filter, and search records by tag across your application.
tags table + one polymorphic pivot) for any Eloquent model — posts, products, users, documents — without us owning the schema, sync logic, or query scopes. That is a "buy" (adopt) decision, not a build decision, unless we need capabilities it doesn't cover (see below).actions/cache, codecov-action, setup-php, actions/checkout, coding-standard constraint widened to ^4.0) plus internal style/table-name fixes. For us, that translates to near-zero integration cost and a maintainer actively tending the repo. One item does touch the public configuration surface — removal of the taggable_morph_key option — which is a config-shape change we'd need to account for if we had already customized the morph key. We have not adopted yet, so there is no migration burden, but it's a reminder to pin the version and read the changelog before minor bumps.Adopt when most of the following hold:
Look elsewhere (or build) when:
taggable_morph_key) is a signal that the config surface is still settling. If you plan to lean heavily on customization, prefer a package with a longer stability record or budget for reading changelogs on every bump.For executives: Tagging is a small, well-understood feature that users expect and that we should not be paying engineers to reinvent. A mature Laravel package now covers it, and this release marks its arrival at a stable 1.x API — meaning we can depend on it with a version constraint and expect predictable upgrades. The release itself is almost entirely maintenance: the maintainer is keeping dependencies current and CI green, which is exactly the signal we want from a small dependency. One minor configuration option was removed, so the integration work is a version pin plus a changelog check on upgrades. Cost is measured in hours, not sprints.
For engineering: Adopt zingimmick/laravel-eloquent-tags at a ^1.1 constraint for polymorphic tagging. You get tag attach/detach/sync and tag-based queries against any model with one table pair. Note two things before integrating: (1) the taggable_morph_key config option was removed in 1.1.0 — don't build around it, and confirm defaults match our intended morph key; (2) the 1.1.0 diff is predominantly Dependabot CI bumps and coding-standard updates with a table-name fix, so there's no feature work to evaluate and nothing to backport. Before committing, do a 30-minute comparison against spatie/laravel-tags on the dimensions we actually need (tag groups, translations, community size, upgrade history) — this package wins on footprint and simplicity, and loses on ecosystem breadth. If we only need "label and filter," take this one.
Risk note to carry forward: single-maintainer dependency — pin the version, subscribe to releases, and keep the tagging abstraction behind a thin application-level service so swapping it out later is a contained change rather than a refactor.
How can I help you explore Laravel packages today?