如何从另一个存储库加载 Doctrine 实体,在共享的 Symfony bundle中



我有一个通用的PHP存储库,其中包含许多Doctrine实体:

src
    Entity
        Foo.php
        Bar.php

我创建了一个共享的 Symfony 捆绑包,它需要这个存储库在其composer.json

"require": {
    "myorg/entities": "dev-master"
},

我怎样才能在这个Symfony捆绑包中注册实体,以便它们立即可用于任何包含它的项目?我想避免父项目必须在其orm配置中显式列出每个实体。

在我看来,最好注册教义 ORM 映射通过。因此,您的实体将在编译时注册。

namespace MyAppBundle;
use DoctrineBundleDoctrineBundleDependencyInjectionCompilerDoctrineOrmMappingsPass;
use SymfonyComponentDependencyInjectionContainerBuilder;
use SymfonyComponentHttpKernelBundleBundle;
class MyAppBundle extends Bundle
{
    /**
     * @param ContainerBuilder $container
     */
    public function build(ContainerBuilder $container)
    {
        $namespaces = ['MyAppBundleEntity'];
        $directories = [__DIR__ . '/Entity'];
        $container->addCompilerPass(DoctrineOrmMappingsPass::createAnnotationMappingDriver($namespaces, $directories));
    }
}

只需使用@Repository注释

例如:

@ORMEntity(repositoryClass="myorgentitiesRepositoryFooRepository")

最新更新