gautrot/propel-bundle
Symfony bundle that integrates the Propel ORM, offering configuration for database connections, model generation, query helpers, and console commands for Propel-based projects. It streamlines using Propel models and migrations alongside Symfony's service container and tooling.
composer require into a Laravel app is not a "just works" path. If you want Propel in Laravel, install propel/propel directly and use this bundle as a reference implementation for how to bootstrap Propel (connection config, build pipeline, runtime setup).DependencyInjection configuration (connection credentials, propel.paths, build-time settings) and its Command/ directory (propel:build, propel:model:build, propel:migration:diff, propel:sql:build, propel:sql:insert). Those commands define the day-to-day surface area.config/propel.php equivalent, create a schema.xml, generate model classes under app/Propel/..., register a PSR-4/classmap autoload entry, and call Propel::setConfiguration() / Propel::initialize() once from a service provider.schema.xml, generate model + query classes, then run one read through a generated XxxQuery class. That proves the wiring before you touch writes.schema.xml as the source of truth, version it, and regenerate classes in CI (propel model:build) instead of editing generated code. In Laravel, hook this into a Composer script or a thin Artisan wrapper that shells out to the Symfony console tooling.Propel::setConfiguration() at boot, and Propel::initialize() behind a static guard so it runs once per process (important under Octane).XxxQuery classes behind your own repositories or action classes. Generated query objects are static and global-state-bound; hiding them keeps tests swappable and stops Eloquent-style assumptions from leaking in.ModelQuery::create()->filterBy...()->find() for reads, $obj->save() for writes; hydrate into DTOs or API resources at the boundary. Propel objects are not Eloquent models — no $casts, no observers, no refresh() chains.propel sql:build / sql:insert against a throwaway DB each pipeline, then run the suite. This catches schema/class drift early.7.1.0.3) and upgrade deliberately rather than floating ^7.php artisan migrate has to be a wrapper you write.symfony/* packages, and Laravel ships Symfony components too — version ranges can collide. Run composer why-not before blaming the bundle, and use Propel core alone if you only need the ORM.Removed more deprecated content in 7.1.0.3: cleanup releases are usually safe, but that phrase is the one that bites if you subclassed or called internals. Grep for anything dropped between 7.1.0.2 and 7.1.0.3 before upgrading, and run the build pipeline in CI first.booted callback.model:build.php artisan cache:clear does not clear them; use Propel's own cache tools or bump the runtime config path.Propel::getConfiguration() at boot to confirm DSN and classpath. Most "wrong database" reports are config-merge issues, not Propel bugs.timestampable, sluggable, etc.) are reusable in a Laravel context — copy them into your schema rather than reimplementing in app code. The service-provider wiring is also a reasonable template if you later write a small Laravel bridge.How can I help you explore Laravel packages today?