- Can I use hugoseigle/symfony-import-export-bundle in a Laravel application?
- Not as a direct Composer dependency. It is a Symfony bundle built around the Symfony DI container, bundle registration, and config/packages YAML, and Laravel has no bundle registry or comparable container-compilation model. You would either have to boot a large slice of the Symfony runtime inside Laravel or extract the import/export core and discard the bundle shell. Treat it as a reference implementation rather than something to install.
- Does this bundle work with Eloquent models, or only Doctrine entities?
- It maps fields to Doctrine entities using PHP attributes, so its metadata and persistence layer target Doctrine's EntityManager. Laravel's default ORM is Eloquent, and while Doctrine can be added through laravel-doctrine/orm, that is a minority setup in most Laravel estates. On an Eloquent codebase the entity-mapping layer is unusable without a rewrite.
- How do I install this package with Composer?
- It installs as a Symfony bundle via Composer and then has to be registered in config/bundles.php with any required YAML configuration. There is no Laravel package discovery or service provider, so composer require on its own accomplishes nothing in a Laravel app. Check the PHP, Symfony, Doctrine, and PhpSpreadsheet version constraints on Packagist before going further.
- Is hugoseigle/symfony-import-export-bundle actively maintained?
- The signal is weak: roughly 17 GitHub stars, zero dependents, and a single named maintainer, so the bus factor is one. Test coverage, static analysis, and CI posture are unverified, and there is no evidence of production use outside the author. The recorded last-release date also looks anomalous and should be reconciled on Packagist before you build planning assumptions on it.
- How does it compare to maatwebsite/excel for Laravel import and export?
- maatwebsite/excel is Laravel-native, Eloquent-aware, and widely used, which makes it the default choice for CSV and Excel work in Laravel. This bundle offers declarative attribute mapping, validation, and multilingual support, but all of that is wired through Symfony and Doctrine rather than Laravel. There is also a realistic chance of a PhpSpreadsheet version conflict if you try to run both in one project.
- Does the bundle stream large CSV or Excel imports, or load everything into memory?
- That is not documented, and it is the first thing to verify before adopting anything. PhpSpreadsheet reads whole workbooks into memory by default, so a 50k-row file can exhaust a 512MB worker. Inspect the reader source for chunking, read filters, and row batching before trusting it with bulk files.
- Does it collect row-level validation errors, or abort on the first failure?
- The overview mentions validating and transforming imported data but does not say whether failures are collected per row with line numbers or whether the import fails fast. That distinction decides whether a partially failed import is recoverable or must be re-run from scratch. Read the import pipeline source to confirm how errors are accumulated and reported.
- Does the bundle wrap imports in a database transaction?
- This is not documented. The design could use one transaction per import, per-batch transactions, or none at all, and each option changes your rollback and retry strategy. If you port the design to Laravel, decide this explicitly and pair it with idempotency keys, since the bundle is described around mapping and validation rather than upsert semantics.
- How do I reuse this bundle's ideas in a Laravel import/export pipeline?
- Lift the design, not the code: declarative column mapping, batched reads, per-row error collection, and a transform-and-validate stage before persistence. Implement those on maatwebsite/excel or PhpSpreadsheet directly, behind a Laravel service provider and a queued job. You get the same pipeline shape with Eloquent persistence and no fork to maintain.
- What Laravel alternatives should I evaluate instead?
- Start with maatwebsite/excel for spreadsheet work, league/csv for plain CSV streaming, and Laravel's own validation and queue components for the transform and batching stages. If you genuinely need to share import contracts with a Symfony estate, run this bundle as a separate sidecar service called over HTTP or a queue. Otherwise, build the pipeline natively rather than pulling Symfony and Doctrine into your Laravel app.