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
Mongodb Odm

Mongodb Odm Laravel Package

doctrine/mongodb-odm

Doctrine MongoDB ODM is an object document mapper for PHP that brings Doctrine-style persistence to MongoDB. Define documents with metadata, map fields and relations, run queries, and handle unit of work, identity map, and migrations for MongoDB apps.

View on GitHub
Deep Wiki
Context7

The Official PHP MongoDB ORM/ODM

Frequently asked questions about Mongodb Odm
Can I use Doctrine MongoDB ODM alongside Laravel Eloquent in the same project?
Yes, ODM is designed to coexist with Eloquent. You can use Eloquent for relational data (e.g., users, posts) and ODM for NoSQL data (e.g., logs, analytics, or geospatial data). Both share similar query patterns like QueryBuilder and Collections, reducing the learning curve. Just ensure proper separation of concerns in your service layer.
What Laravel versions does Doctrine MongoDB ODM support?
ODM itself doesn’t enforce Laravel version constraints, but it requires PHP 8.4+ (due to lazy object support). Laravel 10+ is recommended for full compatibility with Symfony components (e.g., var-exporter, UID) that ODM relies on. Test thoroughly if using older Laravel versions, as some features may not align.
How do I install and configure ODM in a Laravel project?
Install via Composer: `composer require doctrine/mongodb-odm`. Configure MongoDB connection in `config/mongodb.php` (use `jenssegers/laravel-mongodb` for Laravel-specific helpers). Register the `DocumentManager` in a service provider, similar to Eloquent’s `DatabaseServiceProvider`. Example: bind `DocumentManager` to the container with your MongoDB connection and metadata drivers.
Does ODM support Laravel’s migration system for schema changes?
No, ODM lacks native Laravel migrations. Schema changes require manual scripts or a custom `SchemaManager` wrapper. For partial adoption, use ODM for new features while maintaining Eloquent migrations for existing SQL models. Tools like `doctrine/mongodb-odm-tools` can help generate initial document structures.
How does ODM handle relationships compared to Eloquent?
ODM supports embedded documents (like nested objects) and references (like foreign keys). Embedded documents are stored inline, while references use `_id` fields. Unlike Eloquent’s eager loading, ODM uses proxy-based lazy loading, which may impact performance for deeply nested queries. Denormalization is common for complex relationships.
Are there performance concerns with ODM in production?
Yes, ODM’s proxy-based lazy loading can introduce overhead for nested documents. For high-traffic apps, optimize with indexes, sharding, and denormalization. Vector search (introduced in 2.13.0) adds latency if using MongoDB Atlas. Benchmark queries in staging to compare with Eloquent or raw MongoDB drivers.
Can I use ODM for testing without a real MongoDB instance?
No, ODM requires a MongoDB connection even for tests, unlike Eloquent’s SQLite support. Use Dockerized MongoDB in CI/CD or mock the `DocumentManager` for unit tests. For integration tests, leverage tools like `mongodb-memory-server` to spin up an in-memory instance temporarily.
What are the alternatives to Doctrine MongoDB ODM for Laravel?
Alternatives include raw MongoDB PHP drivers (more control, less abstraction), `jenssegers/laravel-mongodb` (simpler but less feature-rich), or `mongodb/mongodb` (official driver with a lighter API). For hybrid SQL/NoSQL, consider PostgreSQL’s JSONB with Eloquent or `spatie/laravel-activitylog` for event sourcing.
How do I handle events (e.g., model saved/deleted) in ODM like Eloquent?
ODM’s lifecycle events (e.g., `onFlush`) don’t map directly to Laravel’s `Model::saved` or `ModelObserver`. Use Laravel’s event system to wrap ODM events. For example, listen to `DocumentManager::preFlush` and dispatch Laravel events manually. Custom event listeners can bridge the gap between ODM and Eloquent’s event contracts.
Is Doctrine MongoDB ODM actively maintained, and what’s the roadmap?
ODM is actively maintained by the Doctrine team, with updates for PHP 9, Symfony 7, and MongoDB 7.0. Check the [GitHub roadmap](https://github.com/doctrine/mongodb-odm/milestones) for features like improved Laravel integration or query optimizations. For Laravel-specific forks, explore `spatie/laravel-mongodb` or community wrappers, though they may lag behind the core ODM.
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.
codraw/framework-extra-bundle
codraw/messenger
codraw/security
codraw/mailer
codraw/contracts
codraw/profiling
codraw/dependency-injection
codraw/tester
codraw/core
nexmo/api-specification
capell-app/block-library
axium/identity
cetria/laravel-dummy-models
cetria/reflection-helper
agropredict/sso-auth-bundle
evolvestudio/spam-protection
datacore/hub-sdk
develia/commons
cuci/prototurk-sdk
cuci/prototurk-sdk-symfony