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

Eloquent Bundle Laravel Package

wouterj/eloquent-bundle

Integrates Laravel's Eloquent ORM into Symfony applications. Register Eloquent models as services and use the familiar ActiveRecord-style API—queries, relationships, and migrations—in your Symfony project, alongside or instead of Doctrine, with full dependency injection support.

Deep Wiki
Context7

Technical Evaluation

Architecture fit

wouterj/eloquent-bundle is a Symfony bundle that wires Laravel's Eloquent ORM (illuminate/database and friends) into the Symfony service container. Despite the framing as a "Laravel/PHP package," its actual value proposition is the inverse: it lets a Symfony application use Laravel's ORM. That inversion is the single most important architectural fact for a TPM to surface, because it determines whether this is a fit or a foreign-body transplant.

  • Symmetric-fit scenario (low risk): A Symfony app, or a bounded Symfony service, where the team is Eloquent-fluent, the data model is simple/active-record-shaped, and no existing Doctrine investment exists. Here the bundle is a thin DI bridge and the mental model is coherent.
  • Asymmetric-fit scenario (high risk): An existing Symfony/Doctrine codebase. You would be running two ORMs, two unit-of-work models, two migration philosophies, and two entity-metadata systems in one process. Doctrine's identity map and change tracking do not interoperate with Eloquent's; entities are not shared. This is the dominant real-world case and it is where the bundle's risk concentrates.
  • The package adds no abstraction of its own beyond container wiring and configuration. It does not shield the application from Laravel's release cadence, and it does not reconcile Symfony's kernel/event lifecycle with Eloquent's model events.

Integration feasibility

Mechanically feasible: illuminate/database is designed to be usable standalone via Capsule, and the bundle's job is small — register the connection manager, model factory, and config. A spike should take days, not weeks.

The feasibility question is therefore not "can we wire it" but "can we own it." With 166 stars, a single-maintainer lineage, and an aggregate score of ~19.8 with an opportunity score of 2.59, the ecosystem signal is weak. Opportunity score that low suggests the package is not on a growth trajectory and is unlikely to attract contributors or commercial backing. Treat it as sample code you may adopt, not a dependency you may rely on.

Technical risk

  • Version-matrix risk (highest): The bundle must be simultaneously compatible with a Symfony major and an illuminate/database major. Laravel ships breaking changes annually; Symfony ships majors on a fixed cadence. The intersection is narrow and the maintainer bears the whole cost of tracking it.
  • Container-semantics risk: Laravel's container, facades, and service providers do not map cleanly onto Symfony's compiled container. Static facades in particular defeat Symfony's DI introspection and complicate testing.
  • Migration risk: Eloquent pairs naturally with Laravel's schema builder/migrations. Symfony teams expect Doctrine Migrations. Running both, or replacing one, is a process and tooling change, not a code change.
  • Data-integrity risk: Transaction semantics, connection pooling, and nested-transaction handling differ between the two stacks; mixing them in one request is a subtle-failure generator.
  • Security surface: Eloquent's mass-assignment behavior ($fillable/$guarded) and raw-query ergonomics need explicit team conventions; the bundle enforces none of them.

Key questions to resolve before commitment

  1. Which exact Symfony and illuminate/database version pairs are declared and tested, and does the constraint set include our current and next-year targets?
  2. Is the maintainer responsive? What is the median time-to-merge on issues over the last 12 months, and are there open compatibility PRs?
  3. Does the bundle support multiple connections, read/write splitting, and connection pooling as our infrastructure requires?
  4. How are migrations and schema ownership handled — Laravel schema builder, Doctrine Migrations, or hand-rolled SQL?
  5. Can Eloquent models be confined behind repository interfaces so the ORM is swappable, or does the active-record pattern leak into controllers and views?
  6. What is the fallback if the package is abandoned — is the wiring small enough that we could vendor or reimplement it in-house (estimated effort)?

Integration Approach

Stack fit

Assume a PHP 8.x Symfony application. The bundle fits only if we accept Eloquent as a first-class, exclusive persistence layer for the services that use it. The recommended posture is a strangler-style boundary: one bounded context or new service uses Eloquent; everything else stays on Doctrine. Do not attempt a phased, table-by-table ORM migration inside a single deployable — the transactional and identity-map mismatches make partial migration the worst of both worlds.

Migration path

  • Greenfield service: lowest friction. Adopt the bundle as the sole ORM, own the wiring, and budget for dependency upkeep.
  • Brownfield Symfony app: do not migrate existing Doctrine entities. Introduce the bundle only for net-new aggregates, behind repository interfaces, with no cross-ORM transactions. If a business operation must write across both, that is a signal to stop and reconsider.
  • Extraction path: because the bundle is thin, we should assume from day one that we may replace it. Isolate all container wiring in one config file and all Eloquent usage behind interfaces, so the replacement cost is measured in days.

Compatibility

Pin aggressively. Use exact or tilde constraints on both symfony/* and illuminate/database, and add a CI job that runs the full matrix we care about. Add a Composer conflict guard against known-bad Laravel majors. Verify that the bundle's service definitions survive cache:warmup and container compilation — lazy/compiled-container interactions are a common breakage point for third-party bundles.

Sequencing

  1. Spike (1–2 days): install in a scratch Symfony app, define one model, exercise CRUD, transactions, and a relation. Confirm the container compiles and tests run.
  2. Due diligence (2–3 days): version-matrix audit, maintainer responsiveness check, and a written fallback plan with an effort estimate for vendoring the wiring.
  3. Bounded pilot (1 sprint): one non-critical new service or read-mostly feature, with repository interfaces and an explicit "no cross-ORM transactions" rule.
  4. Decision gate: promote to production only if the pilot shows no version churn, no lifecycle surprises, and an owner is named. Otherwise, keep the spike as reference and implement the equivalent wiring in-house — it is a small surface.

Operational Impact

Maintenance

This is the dominant cost. The package is MIT, community-supported, and shows low ecosystem momentum. We inherit the obligation to track two upstream release trains. Realistic estimate: a few hours per quarter for routine bumps, and a multi-day scramble whenever a Laravel major or Symfony major lands and the bundle lags. Budget an internal owner by name, not a team alias — abandoned single-maintainer bundles fail organizationally before they fail technically.

Support

No vendor, no SLA, no security response process beyond the maintainer's discretion. Mitigations: fork the repository into our org on day one (cheap insurance), watch releases, and pre-write the replacement plan. Do not adopt this in a tier-0 system without an internal fork and a designated maintainer.

Scaling

Eloquent scales well for conventional OLTP workloads, but the team must internalize its failure modes:

  • N+1 queries are idiomatic and easy to introduce; require eager-loading discipline and a query-count assertion in tests.
  • No mature identity map means duplicate hydration and write-ordering surprises relative to Doctrine; code that assumes a shared object graph will misbehave.
  • Bulk operations and chunking need explicit patterns (chunkById, cursor) rather than get() on large sets.
  • Second-level caching and advanced mapping available in Doctrine are absent; if the design depends on them, the fit is wrong.
  • Connection management under high concurrency and long-running workers must be validated — reconnect behavior is a known rough edge in standalone Illuminate usage.

Failure modes

  • Dependency-lock deadlock: Symfony upgrade blocked by a lagging illuminate/database constraint, or vice versa. Highest-probability, highest-impact.
  • Abandonment: no commits across a Symfony or Laravel major. Mitigated by fork + small surface area.
  • Dual-ORM inconsistency: divergent transaction boundaries, partial writes, or data visible in one ORM and stale in the other within the same request.
  • Migration drift: two schema toolchains producing divergent state; no single source of truth for the schema.
  • Silent behavior gaps: Eloquent model events, observers, and global scopes not firing where the team expects because the Symfony lifecycle differs.
  • Facade leakage: static calls to Laravel facades bypassing the container, degrading testability and making the eventual replacement harder.

Ramp-up

Split-brain knowledge is the hidden cost: engineers need both Symfony bundle conventions and Laravel ORM idioms. Expect 1–2 weeks for a competent Symfony developer to become productive and 4–6 weeks to become fluent in the sharp edges. Documentation for this bundle is sparse, so internal runbooks — connection config, transaction rules, eager-loading conventions, migration ownership — are mandatory deliverables of the pilot, not afterthoughts.

TPM recommendation

The technical bridge is real and small, but the operational bet is not. Given 166 stars, a single-maintainer lineage, and an opportunity score of 2.59 indicating no ecosystem tailwind, treat this as adopt-with-fork in a bounded, non-critical context — or as reference material if the wiring effort (days) is less than the upkeep risk (quarters). It should not enter a tier-0 Symfony estate that already runs Doctrine.

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.
skyraptor/chatter
edlugz/sasapay
abbasudo/artisan-route
mirvan/ippanel
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
adachsoft/api-version-bundle
cgv/localized-resource