iakumai/doctrine-functions

Doctrine DQL Functions for Mysql

dev-master / 0.1.x-dev 2015-01-29 08:02 UTC

This package is not auto-updated.

Last update: 2024-04-13 12:38:02 UTC


README

This package contains some doctrine functions

String functions

DateTime functions

Math functions

  • 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.

Installation

Just add the package to your composer.json

{
    "require": {
        "iakumai/doctrine-functions": "dev-master"
    }
}

Integration

1) Doctrine Only

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');
?>

2) Using Symfony 2

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

Usage

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");
?>