Добавить пользовательское сопоставление ORM без конфигурации - PullRequest
0 голосов
/ 08 мая 2019

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

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')
);

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

1 Ответ

3 голосов
/ 08 мая 2019

Вы можете создать обработчик события с loadClassMetadata событие доктрины https://www.doctrine -project.org / проекты / Доктрина-ОРМ / о / 2,6 / ссылки / events.html # Жизненного цикл-событие

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

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

...