flow-php/symfony-postgresql-bundle
Symfony bundle integrating Flow PHP with PostgreSQL, wiring the ETL data processing framework's Postgres adapter into Symfony's service container so you can build and run dataframe pipelines against Postgres with minimal configuration.
Architecture fit. flow-php/symfony-postgresql-bundle is a Symfony bundle — its value is a Bundle class plus a DI Extension that wires Flow PHP's PostgreSQL adapter into a Symfony kernel via a Configuration tree and compiler passes. Laravel does not boot Symfony bundles; it uses service providers, the config/ repository, and facades. In a Laravel codebase the bundle wrapper is effectively dead weight, and only the underlying adapter services it registers are reusable. Fit is therefore conditional: this is relevant only if Flow PHP is already (or is about to become) the ETL/data-pipeline engine in the stack, and even then we would be re-implementing the wiring ourselves.
Integration feasibility. Low-to-moderate. The realistic path is to depend on flow-php/etl and flow-php/postgresql directly and register a singleton client/adapter in an App\Providers\FlowServiceProvider, reading connection settings from config/database.php or a dedicated config/flow.php. Installing the bundle itself is not harmful (Laravel already pulls in symfony/* transitively), but its constraints can conflict with Laravel's pinned Symfony versions, and loading its extension outside a Symfony kernel is not supported. There is no Laravel service provider, facade, or config stub published by this package.
Technical risk. High. The package has 0 stars, 0 dependents, and a composite score of 0 — there is no production usage signal and no third-party validation. Expect a small maintainer surface, sparse Laravel-adjacent documentation, and pre-1.0 API churn. The MIT license and the underlying Flow PHP project's activity are the main positives. Secondary risk is version lock: Laravel 10/11 pin different symfony/* majors than a Symfony-targeted bundle may declare, so composer update collisions are plausible.
Key questions.
DB/Eloquent already wins)?COPY operations?Verdict: not a default dependency. Evaluate as an internal spike against flow-php/postgresql, not as an adopted bundle.
Stack fit. Laravel 10/11 on PHP 8.2+ with pdo_pgsql (or the pgsql extension) enabled in every environment image, including CI and production containers. This is a fit for batch/ELT workloads — nightly extracts, cross-system syncs, warehouse loads — and a poor fit for request-path CRUD, where Eloquent and the query builder are simpler, better instrumented, and already understood by the team.
Migration path. Install flow-php/etl and flow-php/postgresql, deliberately skip the bundle, and wrap the adapter behind a thin internal interface (App\Data\Contracts\PostgresExtractor) so a future swap to DB::cursor() or a queue-driven job is a one-file change. Reuse Laravel's existing connection config rather than duplicating credentials in a second config file — drift between config/database.php and a Flow-specific config is the most predictable integration bug.
Compatibility. Verify three things before committing: (1) composer why-not against Laravel's Symfony constraints; (2) Flow PHP's PHP version floor vs. the app's runtime; (3) Postgres server version and COPY privileges for the target role. Also confirm type mapping for numeric, timestamptz, jsonb, and arrays — Flow's schema inference is stricter than Eloquent's casting and mismatches surface as runtime errors, not install errors.
Sequencing.
Maintenance. We own the Laravel wiring, not just the dependency. Upstream is Symfony-first, so Laravel compatibility is incidental and will not be tracked in its releases. Pin exact versions in composer.json, review changelogs on every bump, and expect to carry a patch or a fork if the project stalls.
Support. No vendor, no SLA, GitHub issues only with low traffic. The practical support model is one or two in-house engineers who understand Flow PHP's pipeline model. Budget for that as a real cost, not an assumption.
Scaling. Flow PHP is optimized for batch throughput, not concurrency; large Postgres extracts must be chunked or streamed rather than materialized in memory. Watch peak memory per job and connection counts against the app's pool — a single unbounded extract can starve the request path. Bulk loads via COPY are fast but hold locks worth planning around.
Failure modes. Credential drift between configs; partial loads with no built-in idempotency or transactional boundary (we must design retries and upserts); missing pdo_pgsql in a production image that passed locally; composer conflicts on symfony/* at upgrade time; silent type coercion on numeric/jsonb; and unhandled exceptions surfacing as failed queue jobs with no domain context.
Ramp-up. Moderate-to-high. A strong PHP engineer needs roughly one to two weeks to become productive with Flow PHP's ETL abstractions on top of normal Laravel onboarding, plus the spike time. Keep the package off the critical path until one pipeline has run in production for a full cycle, and treat adoption as an experiment with an explicit kill criterion rather than a platform decision.
How can I help you explore Laravel packages today?