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
Doctrine Extensions

Doctrine Extensions Laravel Package

oro/doctrine-extensions

Adds extra Doctrine DQL functions and field types for MySQL and PostgreSQL (e.g., DATE/TIME, TIMESTAMPDIFF, CONVERT_TZ, DAY/WEEK/MONTH, MD5). Includes registration examples for common frameworks and guidance for extending platforms/functions.

View on GitHub
Deep Wiki
Context7

Cross database doctrine DQL functions for MySQL and PostgreSQL.

Frequently asked questions about Doctrine Extensions
Does oro/doctrine-extensions work with Laravel’s native Doctrine ORM setup?
Yes, it integrates seamlessly with Laravel’s Doctrine ORM (via doctrine/orm or doctrine/dbal). Since Laravel already supports Doctrine, you can use this package without disrupting existing workflows. For Symfony-based Laravel setups, configure it in `config/packages/doctrine.yaml` using the provided examples.
Which Laravel versions support oro/doctrine-extensions?
The package works with Laravel projects using Doctrine 2.x (common in Laravel 8/9) or Doctrine 3.x (Laravel 10+ with custom Doctrine setup). Use the `^2.0` branch for Doctrine 2.x and `^3.0` for Doctrine 3.x. Check your `composer.json` for the installed Doctrine version.
Can I use these DQL functions in Eloquent queries?
Eloquent doesn’t natively support custom DQL functions. Use `DB::raw()` or Doctrine QueryBuilder for complex queries. For example, replace `DATE(u.createdAt)` with `DB::raw('DATE(u.createdAt)')` in a query. For advanced use, extend Eloquent’s query grammar or stick to Doctrine QueryBuilder.
How do I register the DQL functions in Laravel?
Add the package to `composer.json` and register functions in `config/packages/doctrine.yaml`. For Doctrine 2.x, use the `oro_doctrine_extensions.orm.listeners` service. For Doctrine 3.x, configure the `FunctionFactory` in your Doctrine configuration. The README provides Symfony/Silex examples that can be adapted.
Are there performance concerns with functions like GROUP_CONCAT?
Some functions (e.g., `GROUP_CONCAT`) may introduce SQL-level aggregation, which could impact performance on large datasets. Benchmark queries in your staging environment before deploying to production. Consider indexing or query optimization if performance drops.
Does this package support databases other than MySQL/PostgreSQL?
No, it explicitly supports MySQL and PostgreSQL. For SQLite or SQL Server, you’d need to create custom platform implementations by extending the package’s architecture. The README details how to add new platforms or functions.
Can I use MoneyType or PercentType with Laravel Eloquent models?
No, Eloquent doesn’t natively support these field types. You’d need to use Doctrine’s entity mappings (annotations/YAML/XML) and access them via the EntityManager. For simpler cases, consider native Laravel solutions like `decimal` columns or custom accessors.
How do I migrate from raw SQL to this package’s DQL functions?
Audit your existing queries for raw SQL using functions like `TIMESTAMPDIFF` or `DATE_FORMAT`. Replace them with DQL equivalents (e.g., `TIMESTAMPDIFF('DAY', u.createdAt, NOW())`). Test thoroughly in a staging environment to ensure backward compatibility.
What’s the best way to extend this package for custom DQL functions?
Follow the package’s architecture: create a new platform class for your database and register it in Doctrine’s configuration. The README provides examples for adding platforms and functions. For Laravel, extend the Doctrine configuration in `doctrine.yaml` to include your custom extensions.
Are there alternatives to oro/doctrine-extensions for Laravel?
For DQL functions, consider `gedmo/doctrine-extensions` (similar functionality) or writing custom Doctrine expressions. For field types, Laravel’s native `decimal` columns or packages like `vlucas/phpdotenv` (for config) may suffice. However, this package is the most comprehensive for MySQL/PostgreSQL DQL extensions.
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