tourze/tag-manage-bundle
A tag management bundle for PHP applications that provides a structured way to create, organize, and maintain reusable tags. It helps keep tagging consistent across content and supports integration into existing projects with minimal setup. It offers a clean, extensible foundation for tag-driven fea...
tourze/tag-manage-bundle 1.1.0 is a minor release (1.0.2 → 1.1.0), so semver says you can upgrade in place — but the 1.1.0 notes consist only of a changelog link (compare/1.0.2...1.1.0), with no described features, deprecations, or breaking changes. Treat the diff as the source of truth before you plan around anything new.
Minimal steps:
composer.json for changed constraints (php, symfony/*, doctrine/*) and look for new/renamed classes in src/. For a Tourze bundle, most real behaviour lives in DI extensions and Doctrine entities, not in docs.composer require tourze/tag-manage-bundle:^1.1.*Bundle class + DependencyInjection/Extension), not Laravel packages. Confirm with grep -r "Symfony\\\\Component" vendor/tourze/tag-manage-bundle/src | head. If it's Symfony-only, a Laravel integration is a bridging exercise (see Gotchas) — decide that before writing code.src/ for the taggable contract/interface and the tag entity, config/ (or Resources/config/) for the service wiring and the table/pivot names, and README.md for the one usage snippet most Tourze bundles ship.Verify before adopting a pattern. Because 1.1.0 ships no notes, diff the public surface (git diff 1.0.2..1.1.0 -- src/) and check whether new methods are additive or whether an interface gained a method (that silently breaks your implementations).
Common shapes for a bundle of this kind:
addTag/removeTag and a syncTags(array $names). Prefer an explicit sync in form/API handlers, and normalize tag names (trim, lowercase, collapse whitespace) before they hit the package so you don't get Laravel / laravel duplicates.new. Symfony bundles expect their services (tag manager, repository, form type) to come from the container so the injected EntityManager/connection is correct. Constructor-inject the manager into your own services and let the container wire it.tag + <entity>_tag). Keep that join behind a query scope/repository method rather than repeating it in controllers.GROUP BY tag_id) instead of hydrating tags per record. Cache the result (Cache::remember / Symfony cache pool) with short TTL — counts go stale fast and are read far more than written./tags, /posts/{id}/tags) and accept tag names on write, IDs on read. Keeps clients decoupled from IDs and matches how the package likely stores names.tourze vendor strongly implies Symfony/Doctrine. In a Laravel app that means no config/tag-manage.php, no facade, and Eloquent models that won't satisfy the taggable contract without an adapter. Options: (a) use it only for a Doctrine-backed sub-domain, (b) write a thin adapter implementing the contract over Eloquent, (c) pick a Laravel-native tagging package instead. Do this triage before estimating the work.EntityManager, migrations generated via doctrine:migrations:diff. In Laravel you won't get php artisan migrate entries for the package tables — replicate the schema (tag, pivot, indexes) by hand and keep it in your own migrations so drift is visible.^1.1 (not *), upgrade in a branch, and diff the schema and DI config after composer update.cache:clear/cache:warmup (or php artisan optimize:clear if bridged) right after upgrading.(tag_id, taggable_id, taggable_type). Without them, concurrent requests create duplicates and syncTags quietly doubles rows. Fix in your own migration if the bundle doesn't.JOIN FETCH the tag association, or pre-fetch tag maps for the page in one query.debug:container | grep tag (or the bundle's service id prefix) is the fastest way to see what 1.1.0 actually registered; compare that output between 1.0.2 and 1.1.0. For query behaviour, log SQL during a sync and confirm row counts match expectations.How can I help you explore Laravel packages today?