Як зареєструвати користувацькі функції DQL

Дата оновлення перекладу 2022-12-14

Як зареєструвати користувацькі функції DQL

Doctrine дозволяє вам вказати користувацькі функції DQL. Щоб дізнатися більше по цій темі, прочитайте статтю Книги рецептів Doctrine Визначені користувачем функції DQL.

В Symfony ви можете зареєструвати ваші користувацькі функції DQL наступним чином:

  • YAML
  • XML
  • PHP
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 має бути визначений під названим менеджером сутностей.

  • YAML
  • XML
  • PHP
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.