在 Symfony 中使用 mysql 函数时,有些函数需要注册自定义 DQL 函数来实现,否则无法使用
自定义 DQL 函数时需要查看的两个文件:verdor/doctrine/orm/lib/Doctrine/ORM/Query/Parser.php
verdor/doctrine/orm/lib/Doctrine/ORM/Query/Lexer.php
需要实现的三个函数, DATE_FORMAT, GLength, If
1 | # app/config/config.yml |
datetime_functions
、numeric_functions
、string_functions
是固定的,必须按此命名DateFormat
、GLength
、If
命名可以自定义,但是SQL调用的时候,必须与这里定义的一致
DATE_FORMAT 用于格式化字段类型 datetime
1 | // Bundles/CommonBundle/DQL/DateFormatFunction.php |
IF 函数,此函数有2种用法
赋值 u.mobile = IF(u.age = 1, ‘12345678901’, ‘12345678902’)
IF(条件, true执行条件, false执行条件)
1 | // Bundles/CommonBundle/DQL/IfFunction.php |
GLength 函数,配合相关函数计算两点间的距离
1 | // Bundles/CommonBundle/DQL/GLengthFunction.php |