This package contains some doctrine functions
INSTR(exp1, exp2)
- documentationFIELD(exp1, exp2, exp3, exp4...)
- documentation
DATE_FORMAT(field, '%format%')
- documentationDATE(field)
- documentation
RAND()
- documentation. Remember, you can not use parameters in this function.RANDP(12345)
- documentation. This is still RAND() MySQL function, but you must use a number parameter in it.
Just add the package to your composer.json
{
"require": {
"iakumai/doctrine-functions": "dev-master"
}
}
According to the Doctrine documentation you can register the functions in this package this way.
<?php
$config = new \Doctrine\ORM\Configuration();
$config->addCustomDatetimeFunction('instr', 'IAkumaI\DQL\Str\Instr');
?>
With symfony 2 you can register yout functions in the config.yml
file.
doctrine:
orm:
entity_managers:
default:
dql:
datetime_functions:
instr: IAkumaI\DQL\Str\Instr
Simple example, usage a DateFormat function:
<?php
use Doctrine\ORM\EntityManager;
// EntityManager
$em->createQuery("SELECT DATE_FORMAT(e.date, '%d.%m.%Y') as df FROM YourBundle:Ent e");
?>
This way you can use DQL function in ORDER statement. For example, order by RAND():
<?php
use Doctrine\ORM\EntityManager;
// EntityManager
$em->createQuery("SELECT e, RAND() as HIDDEN rand FROM YourBundle:Ent e ORDER BY rand");
?>