Как зарегистрировать пользовательские функции DQL
Дата обновления перевода 2023-09-04
Как зарегистрировать пользовательские функции DQL
Doctrine позволяет вам указать пользовательские функции DQL. Чтобы узнать больше информации по этой теме, прочтите статью Cookbook Doctrine's "`Определяемые пользователем функции DQL`_".
В Symfony вы можете зарегистрировать ваши пользовательские функции DQL следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12
# config/packages/doctrine.yaml
doctrine:
orm:
# ...
dql:
string_functions:
test_string: App\DQL\StringFunction
second_string: App\DQL\SecondStringFunction
numeric_functions:
test_numeric: App\DQL\NumericFunction
datetime_functions:
test_datetime: App\DQL\DatetimeFunction
Note
Если entity_managers
были ясно названы, конфигурация функций напрямую с ORM вызовет
исключение "Неопределённая опция "dql" в "doctrine.orm". Блок конфигурации dql
должен
быть определён под названным менеджером сущностей.
1 2 3 4 5 6 7 8 9 10
# config/packages/doctrine.yaml
doctrine:
orm:
# ...
entity_managers:
example_manager:
# Поместите ваши функции здесь
dql:
datetime_functions:
test_datetime: App\DQL\DatetimeFunction
Caution
Функции DQL инстанциируются Doctrine вне сервис-контейнера Symfony, поэтому вы не можете внедрять сервисы или параметры в пользователькую функцию DQL.