Cover of the book Symfony 5: The Fast Track

Symfony 5: The Fast Track is the best book to learn modern Symfony development, from zero to production. +300 pages in full color showing how to combine Symfony with Docker, APIs, queues & async tasks, Webpack, Single-Page Applications, etc.

Buy printed version
WARNING: You are browsing the documentation for Symfony 2.3 which is not maintained anymore. Consider upgrading your projects to Symfony 5.1.

How to Register custom DQL Functions

2.3 version
Unmaintained

How to Register custom DQL Functions

Doctrine allows you to specify custom DQL functions. For more information on this topic, read Doctrine’s cookbook article “DQL User Defined Functions”.

In Symfony, you can register your custom DQL functions as follows:

  • YAML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    # app/config/config.yml
    doctrine:
        orm:
            # ...
            dql:
                string_functions:
                    test_string: AppBundle\DQL\StringFunction
                    second_string: AppBundle\DQL\SecondStringFunction
                numeric_functions:
                    test_numeric: AppBundle\DQL\NumericFunction
                datetime_functions:
                    test_datetime: AppBundle\DQL\DatetimeFunction
    
  • XML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <!-- app/config/config.xml -->
    <container xmlns="http://symfony.com/schema/dic/services"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:doctrine="http://symfony.com/schema/dic/doctrine"
        xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd
                            http://symfony.com/schema/dic/doctrine http://symfony.com/schema/dic/doctrine/doctrine-1.0.xsd">
    
        <doctrine:config>
            <doctrine:orm>
                <!-- ... -->
                <doctrine:dql>
                    <doctrine:string-function name="test_string">AppBundle\DQL\StringFunction</doctrine:string-function>
                    <doctrine:string-function name="second_string">AppBundle\DQL\SecondStringFunction</doctrine:string-function>
                    <doctrine:numeric-function name="test_numeric">AppBundle\DQL\NumericFunction</doctrine:numeric-function>
                    <doctrine:datetime-function name="test_datetime">AppBundle\DQL\DatetimeFunction</doctrine:datetime-function>
                </doctrine:dql>
            </doctrine:orm>
        </doctrine:config>
    </container>
    
  • PHP
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    // app/config/config.php
    $container->loadFromExtension('doctrine', array(
        'orm' => array(
            // ...
            'dql' => array(
                'string_functions' => array(
                    'test_string'   => 'AppBundle\DQL\StringFunction',
                    'second_string' => 'AppBundle\DQL\SecondStringFunction',
                ),
                'numeric_functions' => array(
                    'test_numeric' => 'AppBundle\DQL\NumericFunction',
                ),
                'datetime_functions' => array(
                    'test_datetime' => 'AppBundle\DQL\DatetimeFunction',
                ),
            ),
        ),
    ));
    

This work, including the code samples, is licensed under a Creative Commons BY-SA 3.0 license.