Weave Code
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
Persistence

Persistence Laravel Package

doctrine/persistence

Doctrine Persistence provides shared interfaces and abstractions for object mapper persistence in PHP. It standardizes common concepts like object managers, repositories, and metadata across Doctrine and other mappers, helping libraries integrate consistently.

View on GitHub
Deep Wiki
Context7

The Doctrine Persistence project is a library that provides common abstractions for object mapper persistence.

Frequently asked questions about Persistence
Can I use doctrine/persistence with Laravel Eloquent without conflicts?
Direct conflicts are unlikely if you isolate Doctrine and Eloquent in separate service containers or modules. Use Doctrine for complex entities (e.g., DDD repositories) while keeping Eloquent for simpler models. Manual mapping or facade patterns may be needed for shared logic.
What Laravel versions support doctrine/persistence (PHP 8.1+)?
Laravel 10+ officially supports PHP 8.1+, aligning with doctrine/persistence’s requirements. Older Laravel versions (e.g., 9.x) may need polyfills or manual adjustments. Always check your Laravel and PHP version compatibility before installation.
How do I install doctrine/persistence in a Laravel project?
Run `composer require doctrine/persistence` to install the package. For full Doctrine ORM functionality, also install `doctrine/orm` and configure it separately (e.g., via a custom `doctrine.php` config file). Avoid mixing Doctrine and Eloquent configurations in the same database connection.
Does doctrine/persistence replace Eloquent, or should I use both?
It’s designed for coexistence, not replacement. Use Doctrine for advanced features like DDD repositories, complex queries, or multi-ORM support, while Eloquent handles simpler CRUD operations. Hybrid projects often pair both for optimal performance and flexibility.
How do I configure doctrine/persistence for a custom database connection?
Extend Laravel’s database configuration by defining a separate Doctrine DBAL connection in your `config/doctrine.php`. Use the `driver` (e.g., `pdo_mysql`) and `url` or connection parameters, then bind the `EntityManager` to this connection in your service container.
What are the performance implications of using doctrine/persistence in Laravel?
The abstraction layer adds minor overhead compared to raw Eloquent or Query Builder. Benchmark critical paths and cache metadata (e.g., using Laravel’s cache drivers) to mitigate performance gaps. For high-traffic apps, test both solutions under load.
Can I use doctrine/persistence with Laravel’s caching system?
Yes, Doctrine’s `MetadataCache` integrates seamlessly with Laravel’s cache drivers (e.g., Redis, file, database). Configure the cache in your Doctrine setup to store metadata, reducing repeated database queries and improving performance.
Are there alternatives to doctrine/persistence for Laravel ORM abstractions?
For Laravel-specific needs, Eloquent’s Query Builder or Accessors may suffice for simpler projects. If you need Doctrine’s full feature set (e.g., DQL, annotations), alternatives like `illuminate/database` (native) or `cycle/orm` (lightweight) exist, but none match Doctrine’s ecosystem for complex use cases.
How do I test doctrine/persistence in a Laravel application?
Mock Doctrine interfaces (e.g., `ObjectRepository`) using Laravel’s Mockery or Doctrine’s test utilities. Isolate Doctrine-specific logic in services and test them independently. For integration tests, use in-memory databases (e.g., SQLite) to avoid dependency on production DBs.
What maintenance considerations exist for long-term Laravel + Doctrine integration?
Monitor Doctrine’s release cycle for PHP version updates (e.g., PHP 8.5+) and Laravel compatibility. Assign a team member to handle Doctrine-specific updates, and document fallback plans if integration becomes a bottleneck. Regularly audit dependencies for security patches.
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.
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager
alimarchal/laravel-chart-of-accounts
babenkoivan/elastic-scout-driver
mkwebdesign/filament-watchdog-v5
renatomarinho/laravel-page-speed
zedmagdy/filament-business-hours
renatovdemoura/blade-elements-ui
devgeek/beacon-admin
benjamin-rqt/data-watcher-bundle
atriumphp/atrium
sandermuller/package-boost-laravel
sandermuller/boost-skills
redaxo/core
yusufgenc/filament-api-forge
l3aro/rating-star-for-filament
leek/filament-subtenant-scope
anil/file-picker
broqit/fields-ai