kitano/connection-bundle
Symfony bundle for managing multiple database connections. Configure named connections, switch between them at runtime, and centralize connection setup—useful for multi-tenant apps or services that need to talk to more than one database.
(source, target, type, direction, metadata) with a service layer on top. Leverage it as a design reference for that decision, not as a composer require on a Laravel roadmap.KitanoConnectionBundle — Symfony DI classes and Doctrine mappings with no service provider, no publishable config, no facade. On a modern PHP 8 / Laravel 10+ stack, the constraint resolution alone exceeds the cost of writing the edge model in-house. The PM decision is "borrow the pattern, skip the package."Consider it — as a dependency or as a design reference — when:
Look elsewhere when:
composer.json that hard-conflict with the PHP 8.1+ floor. Treat any residual Doctrine coupling in a Laravel port as a stop sign.ManyToMany, morphToMany polymorphic pivots) are simpler, supported, and free.connections table with a unique composite index, BFS with a visited set and hard max-depth, batched whereIn per hop. Leave the bundle.Executives. Low sticker price, high ownership cost. A 13-star, Symfony 2-era bundle with zero dependents is source code we would adopt, not a supported library — so budget fork maintenance, PHP-version upgrades, and security patching as if we wrote it. The genuinely valuable asset is the pattern: one directed-connection graph instead of a growing pile of relationship tables, which lets us ship follows, tags, and cross-links without a migration each time. We can implement that in-house in days and keep it inside our own support and security posture. Recommendation: no dependency, yes to borrowing the model. Revisit only when a graph-shaped feature lands on the roadmap — and even then, evaluate a maintained alternative or a graph store first.
Engineering. It is a thin abstraction over an adjacency edge entity with direction and type. It solves "we keep adding join tables," but contributes nothing for traversal, indexing, or query performance, and the Symfony glue is inert outside Symfony's kernel. If we need this capability, define our own connections table with composite indexes on (source, type) and (target, type), keep writes behind a service layer, and build the guardrails the package lacks: cycle detection with max-depth limits, caps on per-node fan-out, a scheduled integrity job for orphaned edges (polymorphic edges cannot use foreign keys), and a unique composite index to prevent duplicate edges corrupting traversal counts. Do not add this to composer.json on Laravel or modern Symfony — the constraint resolution alone will cost more than writing the model. If the domain later proves genuinely graph-heavy, the correct escalation is Postgres AGE, Neo4j, or a dedicated graph service — not a 2015 bundle.
How can I help you explore Laravel packages today?