我有一个通用的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")