Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Multi Tenancy Bundle Laravel Package

tahoelimited/multi-tenancy-bundle

A Laravel multi-tenancy bundle from Tahoe Limited that helps developers build tenant-aware applications with isolated database connections, configurable tenant resolution, and secure separation of tenant data, ideal for SaaS platforms and multi-tenant APIs.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit — poor, and the framing is wrong. Despite the "Laravel/PHP package" label, this repository (vmeretail/multi-tenancy-bundle) is a Symfony 2 bundle, not a Laravel package. The description states "for symfony 2 apps." Symfony bundles are bound to Symfony's kernel, DI container, and EventDispatcher; Laravel has no mechanism to register or boot a Symfony bundle. There is no shared abstraction layer to bridge. Symfony 2 itself reached end-of-life in November 2018 (2.8 LTS), so even inside a Symfony shop this targets a runtime that no longer receives security patches. With 25 stars and zero dependents, there is essentially no production signal to offset that risk.

Integration feasibility — low as a dependency, moderate as a design reference. Composer constraints will almost certainly pin PHP 5.x–7.x and symfony/symfony 2.x, which conflict with any modern Laravel application (PHP 8.1+, Laravel 10/11) and with Symfony 5/6. Laravel's package auto-discovery will not pick it up. The realistic value is architectural: its tenant-resolution listener, connection-switching logic, and Doctrine filtering demonstrate one team's approach to isolation. That is reading material, not a dependency.

Technical risk — high. The codebase is unmaintained against an EOL framework, has no security response path, and couples tightly to Doctrine ORM versions of that era. The critical unknown is the isolation model: shared schema with a tenant discriminator, schema-per-tenant, or database-per-tenant. Each carries a very different blast radius for data leakage and migration complexity. Equally important is whether tenant context propagates correctly into CLI commands, queue workers, and long-running processes — a concern the Symfony 2 era largely ignored and one that is acute in modern Laravel (Horizon, Octane).

Key questions to resolve before any decision: What license applies, and is redistribution/forking permitted? What does composer.json actually constrain (PHP, Symfony, Doctrine)? Which isolation strategy does it implement, and is tenant provisioning automated or manual? How are per-tenant migrations orchestrated? Does the bundle handle cache, session, filesystem, and queue isolation, or only the database connection? Is there a maintained fork or successor? And most fundamentally: does the organization run Symfony 2 anywhere at all? If the answer is no, this evaluation ends at "reference only."

Integration Approach

Stack fit — concept donor, not a dependency. For a Laravel target, the correct move is to translate the patterns into a Laravel-native, maintained package: stancl/tenancy or spatie/laravel-multitenancy. Both are actively maintained, support modern PHP, and handle the concerns this bundle predates (queue tenant awareness, cache scoping, Octane safety). Porting the Symfony bundle to Laravel is not worth the engineering cost at 25 stars and zero dependents — you would be adopting an unmaintained codebase and rewriting it simultaneously.

Migration path. (1) A one-to-two day discovery spike reading the bundle's tenant resolver, connection switcher, and Doctrine filter, documented as an internal design note. (2) Elicit the actual isolation requirements — data residency, per-tenant backup/restore, noisy-neighbor tolerance, tenant count and growth curve. (3) Select a maintained package that matches those requirements. (4) Prototype tenant resolution on a single non-critical tenant. (5) Layer in data isolation, then provisioning, then migration tooling. If the organization genuinely operates a Symfony 2 application, the correct sequence is a Symfony upgrade first, then adoption of a current tenancy solution — this bundle is not a viable landing spot either way.

Compatibility. The gating items are the PHP version constraint and the Symfony/Doctrine version pins; expect PSR-0-era autoloading and YAML/XML service configuration that has no equivalent in Laravel's PHP-based configuration. Nothing here is a drop-in.

Sequencing. Discovery and requirements → isolation-model decision → package selection → tenant resolution → data layer → provisioning and migrations → background jobs, storage, and cache → observability and leakage tests → cutover. The repository appears only in step one.

Operational Impact

Maintenance. If adopted (or forked), the maintenance burden is effectively total. You inherit an EOL framework dependency with no upstream security patching, and every future PHP or dependency CVE becomes your problem to triage manually. A fork means permanent ownership of a codebase with no community.

Support. Community-only with a very thin community: 25 stars, zero dependents means no Stack Overflow corpus, no third-party integrations, no blog posts describing edge cases, and a single-maintainer bus factor. Incidents will be debugged from first principles.

Scaling. Entirely dependent on the isolation model. Database-per-tenant gives clean noisy-neighbor separation and per-tenant restore, but multiplies connection overhead and migration orchestration linearly with tenant count. Shared-schema is operationally cheaper but raises index contention and cross-tenant leakage risk to a first-order concern. Connection-switching implementations of this vintage are frequently not connection-pool friendly, which matters under managed database offerings with hard connection limits.

Failure modes. The dominant risk is tenant-context bleed — a stale tenant identifier reused across requests or long-lived queue workers, resulting in one tenant reading or writing another's data. Secondary failure modes: silent fallback to a default tenant when resolution fails, migration drift between tenants, connection pool exhaustion at scale, and cache or session key collisions where scoping was never implemented. In a modern Laravel deployment with Horizon and Octane, the context-propagation assumptions here would need to be rebuilt regardless.

Ramp-up. Reading the code is quick — it is small and uses familiar Symfony 2 idioms. But the knowledge is largely non-transferable: engineers would learn a dead framework's DI and event conventions that do not apply to Laravel. The genuine ramp-up cost sits in tenancy domain design — isolation boundaries, provisioning, migration strategy, and leakage testing — which this package does not teach well and cannot supply.

Verdict. The 6.6 score and 7.07 opportunity signal likely reflect generic metadata rather than stack fit; against a Laravel/PHP brief, the framework mismatch is disqualifying. Recommendation: do not adopt. Retain as a one-hour architectural reference and invest in a maintained, Laravel-native tenancy package.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator
equipc/laravel-email-database-log
adedsec/nova-translated-labels