我创建了一个使用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')
);
希望这有道理! :-)
答案 0 :(得分:3)
您可以使用 loadClassMetadata 学说事件创建事件处理程序 https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/events.html#lifecycle-events
获取捆绑包: 容器中的“ kernel.bundles_metadata”参数