如何注册自定义DQL函数
编辑本页警告:您正在浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 5.3,现已不再维护。
读本页的更新版本用于Sy欧宝娱乐app下载地址mfony 6.2(当前稳定版本)。
如何注册自定义DQL函数
Doctrine允许您指定自定义DQL函数。有关此主题的更多信息,请阅读Doctrine的烹饪书文章“' DQL用户定义函数' _”。
在Sy欧宝娱乐app下载地址mfony中,您可以按以下方式注册自定义DQL函数:
- YAML
- XML
- PHP
12 3 4 5 6 7 8 9 10 11 12
#配置/包/ doctrine.yaml原则:orm:#……dql:string_functions:test_string:App \ DQL \ StringFunctionsecond_string:App \ DQL \ SecondStringFunctionnumeric_functions:test_numeric:App \ DQL \ NumericFunctiondatetime_functions:test_datetime:App \ DQL \ DatetimeFunction
12 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20 21
<!——config/packages/doctrine.xml——> .xml<容器xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xmlns:原则=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/doctrine”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services //www.oldmanjams.com/schema/dic/services/services-1.0.xsd //www.oldmanjams.com/schema/dic/doctrine //www.oldmanjams.com/schema/dic/doctrine/doctrine-1.0.xsd”><原则:配置><原则:orm><!——……--><原则:dql><原则:字符串函数的名字=“test_string”>App \ DQL \ StringFunction原则:字符串函数><原则:字符串函数的名字=“second_string”>App \ DQL \ SecondStringFunction原则:字符串函数><原则:numeric-function的名字=“test_numeric”>App \ DQL \ NumericFunction原则:numeric-function><原则:datetime函数的名字=“test_datetime”>App \ DQL \ DatetimeFunction原则:datetime函数>原则:dql>原则:orm>原则:配置>容器>
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
/ /配置/包/ doctrine.php使用应用程序\DQL\DatetimeFunction;使用应用程序\DQL\NumericFunction;使用应用程序\DQL\SecondStringFunction;使用应用程序\DQL\StringFunction;使用欧宝娱乐app下载地址\配置\DoctrineConfig;返回静态函数(DoctrineConfig$学说){$defaultDql=$学说->orm ()->entityManager (“默认”)/ /……->dql ();$defaultDql->stringFunction (“test_string”, StringFunction::类);$defaultDql->stringFunction (“second_string”, SecondStringFunction::类);$defaultDql->numericFunction (“test_numeric”, NumericFunction::类);$defaultDql->datetimeFunction (“test_datetime”, DatetimeFunction::类);};
请注意
万一entity_managers
如果显式命名,直接使用ORM配置函数是否会触发异常“doctrine.orm”下无法识别的选项“dql”
.的dql
配置块必须在命名实体管理器下定义。
- YAML
- XML
- PHP
1 2 3 4 5 6 7 8 9 10
#配置/包/ doctrine.yaml原则:orm:#……entity_managers:example_manager:#把你的函数放在这里dql:datetime_functions:test_datetime:App \ DQL \ DatetimeFunction
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
<!——config/packages/doctrine.xml——> .xml<??> . xml version="1.0" encoding="UTF-8"<容器xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xmlns:原则=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/doctrine”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services //www.oldmanjams.com/schema/dic/services/services-1.0.xsd //www.oldmanjams.com/schema/dic/doctrine //www.oldmanjams.com/schema/dic/doctrine/doctrine-1.0.xsd”><原则:配置><原则:orm><!——……--><原则:实体管理器的名字=“example_manager”><!——把你的函数放在这里——><原则:dql><原则:datetime函数的名字=“test_datetime”>App \ DQL \ DatetimeFunction原则:datetime函数>原则:dql>原则:实体管理器>原则:orm>原则:配置>容器>
12 3 4 5 6 7 8 9 10 11 12
/ /配置/包/ doctrine.php使用应用程序\DQL\DatetimeFunction;使用欧宝娱乐app下载地址\配置\DoctrineConfig;返回静态函数(DoctrineConfig$学说){$学说->orm ()/ /……->entityManager (“example_manager”)//把你的函数放在这里->dql ()->datetimeFunction (“test_datetime”, DatetimeFunction::类);};
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。