This library provides you MySQL functions for Doctrine2.
At the moment are supported
- RAND
- ROUND
- DATE
- DATE_FORMAT
Feel free to fork and add other functions.
With composer
composer require mapado/mysql-doctrine-functions
$config = new \Doctrine\ORM\Configuration();
$config->addCustomStringFunction('rand', \Mapado\MysqlDoctrineFunctions\DQL\MysqlRand::class);
$config->addCustomStringFunction('round', \Mapado\MysqlDoctrineFunctions\DQL\MysqlRound::class);
$config->addCustomStringFunction('date', \Mapado\MysqlDoctrineFunctions\DQL\MysqlDate::class);
$config->addCustomStringFunction('date_format', \Mapado\MysqlDoctrineFunctions\DQL\MysqlDateFormat::class);
$em = EntityManager::create($dbParams, $config);
You can of course pick just the functions you need.
If you install the library in a Symfony application, you can add this in your config.yml
file (doctrine.yaml
file if you use symfony flex)
# app/config/config.yml
doctrine:
orm:
# ...
entity_managers:
default:
# ...
dql:
numeric_functions:
rand: 'Mapado\MysqlDoctrineFunctions\DQL\MysqlRand'
round: 'Mapado\MysqlDoctrineFunctions\DQL\MysqlRound'
datetime_functions:
date: 'Mapado\MysqlDoctrineFunctions\DQL\MysqlDate'
date_format: 'Mapado\MysqlDoctrineFunctions\DQL\MysqlDateFormat'
# ... add all functions you need
You can now use the functions in your DQL Query
$query = 'SELECT RAND(), ROUND(123.45)
FROM ...
';
$em->createQuery($query);