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

Propel Bundle Laravel Package

skyfox/propel-bundle

Symfony bundle that integrates the Propel ORM, letting you define models in schema files, generate PHP classes, and query data through Propel's fluent API, with configuration, service wiring, and console tooling built into the Symfony framework.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Package identity mismatch (first-order issue). skyfox/propel-bundle is a Symfony2 bundle, not a Laravel package. It wires the Propel 2 ORM into the Symfony full-stack framework via a Bundle class, a DI extension, a configuration tree (propel:), console commands (propel:build, propel:model:build, propel:migration:*), and a data-collector for the Symfony profiler. None of those seams exist in Laravel. The bundle is therefore not installable into a Laravel application in any supported way — Composer will pull symfony/symfony-era component constraints that conflict with illuminate/*, and even if resolved with --ignore-platform-reqs, there is no kernel to register the bundle with.

What is actually reusable. Propel itself (propel/propel) is framework-agnostic: a runtime (Propel\Runtime\Propel), a connection manager driven by a config array/php file, generated ActiveRecord + Query classes, and a CLI for schema/migration/codegen. The only durable asset in this package is a reference implementation of "how to configure and drive Propel from a framework container." In a Laravel context that is roughly 300–600 lines of glue we would own ourselves, not a dependency.

Architecture fit: poor. Propel's model is generated-code-first (schema XML → base classes → concrete subclasses you edit), which is philosophically opposed to Eloquent's hand-written, convention-over-configuration Active Record. Adopting it means: a codegen step in the build pipeline, generated artifacts in version control, a dual-class hierarchy (Base* / *), and a query API (ModelQuery, Criteria) that no Laravel developer on the team knows. That is a permanent tax on every onboarding.

Integration feasibility: low as-is, moderate if re-scoped.

Integration vector Feasible with this package Realistic alternative
composer require skyfox/propel-bundle in Laravel No — Symfony kernel/bundle + version conflicts —
Use Propel ORM alongside Eloquent No — bundle is the blocker, not Propel propel/propel + custom ServiceProvider
Symfony 2/3 legacy app Yes, in principle — but pinned to EOL Symfony/PHP Fork and patch, or full port
Schema/migration tooling Not reusable Propel CLI invoked from a Laravel command

Technical risk: high, concentrated in abandonment. 7 stars, 0 dependents, last release 2022-10-16, single-org fork of an upstream bundle that was effectively retired when Symfony moved past the bundle era. There is no security-response process, no PHP 8.x/8.3/8.4 certification, and no path to a CVE fix except "we patch our fork." For a system of record (an ORM sees every query and every credential in databases.php), that is an unacceptable supply-chain posture unless the code is vendored into our repo and owned by a named engineer.

Key questions before any decision:

  1. What is the actual driver? Existing Propel schema.xml + generated models we must preserve? A Symfony2 app being ported to Laravel? Or a perceived performance need? Only the first two justify considering Propel at all; if it's performance, this is the wrong tool and the wrong conversation.
  2. Is the target stack genuinely Laravel, or is the requester conflating "PHP package" with "Laravel package"? This assessment changes completely if the target is an existing Symfony 2/3 app.
  3. Who owns the fork? Is there budget for one engineer to maintain a vendored Propel integration indefinitely?
  4. What PHP and Laravel versions must be supported, and does propel/propel 2.x satisfy them?
  5. Is Propel's generated-code model acceptable in our CI and code-review workflow (large generated diffs)?
  6. What is the licensing and provenance of this fork versus upstream propel/propel-bundle?

Verdict: Treat the 2.03 score as accurate. This is a reference implementation to read, not a dependency to ship.

Integration Approach

Stack fit. There is no direct fit. Laravel's extension surface is service providers, facades, and Illuminate\Database connections; Propel expects to own the PDO handle, the transaction stack, and its own connection manager singleton. Bridging them means deciding, explicitly, that Propel owns the connection and Eloquent does not — mixing both against the same tables in one request is a correctness hazard (two transaction contexts, two identity maps, no shared dirty-state).

Recommended path: do not integrate the bundle; integrate the ORM (and only if Q1 justifies it).

  1. Read, don't require. Vendor the bundle's DI extension and config-normalization logic into app/Propel/ as reference. Extract the array shape it produces for Propel::setConfiguration().
  2. Require propel/propel directly. Add propel/propel (and propel/propel-bundle only as reading material) to a spike branch; confirm PHP 8.x compatibility with a real schema, not a smoke test.
  3. Write a PropelServiceProvider. Load config/propel.php, call Propel::init() in register(), and — critically — bind connection setup to boot()/terminating() rather than a long-lived static, so Octane and queue workers do not inherit stale handles.
  4. Keep codegen out of the request path. Generated Base* classes are build artifacts: a php artisan propel:build command wrapping the Propel CLI, run in CI, committed under app/Propel/Models/, autoloaded via a PSR-4 namespace. Never generate at runtime.
  5. Isolate behind repositories. Expose Propel models only to App\Repositories\*; controllers and jobs depend on interfaces. This is the single most important decision — it caps the blast radius if we later revert to Eloquent.
  6. Do not dual-write. No Eloquent model may touch a table Propel owns. Partition by table, and document the boundary in the repo.

Migration path (if porting off a Symfony2 app). Extract schema.xml and the bundle's propel: config block → regenerate models against the target PHP version → stand up the Laravel PropelServiceProvider → port console commands (propel:migration:diff etc.) to Artisan wrappers → run both frameworks against a shared schema in staging to diff query results → cut traffic over per-endpoint. Sequence the cutover per bounded context, not per layer; a half-ported context with two ORMs on one table set is the most likely way this project fails.

Compatibility. Expect hard Composer conflicts: the bundle's symfony/* constraints predate Symfony 5, while Laravel 9+ pins Symfony components to 6.x. illuminate/support and the bundle cannot co-resolve. Propel core is the only piece with a plausible path to modern PHP, and even that requires verification against 8.2/8.3 before any commitment.

Sequencing. (1) Answer Q1 — driver and target stack. (2) Two-day spike: Propel core + one real table + one repository + one Octane request loop. (3) Only on a clean spike, size the codegen/CI work. Do not sequence the bundle installation at all.

Operational Impact

Maintenance. Effectively zero upstream. Last release 2022, one organization, 7 stars. Any defect we hit is ours to fix. Budget a standing 10–20% of one engineer for ORM-glue upkeep, PHP-version bumps, and security triage — forever, or until the Propel footprint is retired. Compare against Eloquent, whose maintenance cost is amortized across the framework we already pay for.

Support. No community, no issue traffic, no Stack Overflow corpus of consequence. Debugging is source-reading. Propel's own documentation is thin and dated; the bundle's is thinner. Institutional knowledge will live in one or two heads.

Scaling. Propel's runtime performance is not the concern — it is competitive with Doctrine for read-heavy workloads and its generated Query classes are reasonably fast. The concerns are:

  • Long-lived workers (Octane, Swoole, queue daemons): Propel::getConnection() returns a process-wide singleton. Connections and open transactions survive across requests. This is the highest-probability production incident and must be handled with an explicit per-request reset in middleware/terminating callbacks, verified under load.
  • Connection budget: Propel opens connections lazily and does not participate in Laravel's connection pool accounting, so DB:: metrics will under-report actual PDO usage. Capacity planning must read the DB's own connection stats.
  • N+1 and hydration: ActiveRecord-style relation access invites N+1s, and Propel lacks Laravel's preventLazyLoading guardrails and Telescope-style visibility by default. Expect to build query logging ourselves.

Failure modes, ranked:

  1. Static connection/transaction bleed across requests under Octane — silent data corruption in the worst case.
  2. Generated-model drift: schema changes without regenerating, or regenerated Base* classes overwritten by hand edits, producing behavior that diverges from the schema.
  3. Composer deadlock on a PHP or Symfony security bump with no upstream fix — forcing an emergency fork-and-patch under incident pressure.
  4. Two-ORM transaction interleaving on shared tables if the isolation rule is violated.
  5. Bus factor: the one engineer who understands the glue leaves.

Ramp-up. Steep and non-transferable. A Laravel developer is productive in Eloquent on day one; Propel requires learning the schema-XML workflow, the Base*/concrete class split, the Query/Criteria API, and the migration commands — call it 2–3 weeks to competent, 2–3 months to fluent, per engineer. That is a recurring cost on every future hire and directly reduces the pool of candidates who can be productive in this codebase.

Bottom line. Adopt only if a Propel schema is a non-negotiable business constraint — and even then, take propel/propel with an in-house service provider and a repository boundary, leaving this bundle as documentation. If the requirement is merely "we're a PHP shop considering alternatives," decline: the score, the star count, the dependents, and the 2022 release date all point the same direction.

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