发布于 2015-08-27 16:54:13 | 170 次阅读 | 评论: 0 | 来源: 网络整理
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:
# app/config/config.yml
doctrine:
orm:
# ...
dql:
string_functions:
test_string: AppBundleDQLStringFunction
second_string: AppBundleDQLSecondStringFunction
numeric_functions:
test_numeric: AppBundleDQLNumericFunction
datetime_functions:
test_datetime: AppBundleDQLDatetimeFunction
<!-- 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">AppBundleDQLStringFunction</doctrine:string-function>
<doctrine:string-function name="second_string">AppBundleDQLSecondStringFunction</doctrine:string-function>
<doctrine:numeric-function name="test_numeric">AppBundleDQLNumericFunction</doctrine:numeric-function>
<doctrine:datetime-function name="test_datetime">AppBundleDQLDatetimeFunction</doctrine:datetime-function>
</doctrine:dql>
</doctrine:orm>
</doctrine:config>
</container>
// app/config/config.php
$container->loadFromExtension('doctrine', array(
'orm' => array(
// ...
'dql' => array(
'string_functions' => array(
'test_string' => 'AppBundleDQLStringFunction',
'second_string' => 'AppBundleDQLSecondStringFunction',
),
'numeric_functions' => array(
'test_numeric' => 'AppBundleDQLNumericFunction',
),
'datetime_functions' => array(
'test_datetime' => 'AppBundleDQLDatetimeFunction',
),
),
),
));