Добавить пользовательское сопоставление ORM без настройки

Я создал пакет, который устанавливается с помощью композитора, с объектами в этой структуре папок:

Components\Product\Entity\Product.php
Components\Category\Entity\Category.php
...

Поэтому при установке пакета я бы отредактировал файл конфигурации моего приложения, чтобы добавить правильное сопоставление, например, так:

doctrine:
    orm:
        mappings:
            type: annotation
            dir: "%kernel.project_dir%/vendor/my-custom/bundle/Components/Product/Entity"
            prefix: 'My\Custom\Bundle'
            alias: MyCustomBundle

И это для каждой папки.

Таким образом, при установке пакета требуется много дополнительных настроек, чтобы добавить сопоставления для всех этих сущностей.

Можно ли определить эти сопоставления внутри пакета? Предпочтительно с помощью слушателя или что-то в этом роде?

На самом деле я пытаюсь добиться того, чтобы сущности могли быть определены в приложении следующим образом:

my_bundle:
    entities: 
        product_entity: App\Entity\Product
        category_entity: App\Entity\Category

И если вы их не определите, будут использоваться объекты по умолчанию из пакета (так что product_entity будет Components\Category\Entity\Product)

Итак, что я хочу сделать, это прокрутить все эти сущности и вручную сопоставить их, проще говоря, я хочу иметь возможность сделать это:

$doctrine->mapEntity(
    $parameterBag->get('product_entity')
);

Надеюсь, это имеет смысл! :-)

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
0
0
68
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете создать обработчик событий с событием доктрины loadClassMetadata. https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/events.html#lifecycle-events

  1. Вы устанавливаете сопоставление внутри пакета (например, в /Resources/config/doctrine_mapping.yml)
  2. Вы проверяете эти конфиги в своем кастомном обработчике из всех бандлов
  3. ВЫГОДА

Получить пакеты: Параметр 'kernel.bundles_metadata' в контейнере

Спасибо! Событие loadClassMetadata заставило меня двигаться в правильном направлении!

Evdv 10.05.2019 13:40

Другие вопросы по теме