我有一个通用的PHP repo,其中包含许多Doctrine实体:
src
Entity
Foo.php
Bar.php
我创建了一个共享的Symfony包,需要在composer.json
中使用此repo:
"require": {
"myorg/entities": "dev-master"
},
如何在此Symfony包中注册实体,以便它们立即可用于包含它的任何项目?我想避免父项目必须明确列出其orm
配置中的每个实体。
答案 0 :(得分:1)
在我看来,更好地注册Doctrine ORM映射传递。所以你的实体将在编译时注册。
namespace My\AppBundle;
use Doctrine\Bundle\DoctrineBundle\DependencyInjection\Compiler\DoctrineOrmMappingsPass;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\HttpKernel\Bundle\Bundle;
class MyAppBundle extends Bundle
{
/**
* @param ContainerBuilder $container
*/
public function build(ContainerBuilder $container)
{
$namespaces = ['My\AppBundle\Entity'];
$directories = [__DIR__ . '/Entity'];
$container->addCompilerPass(DoctrineOrmMappingsPass::createAnnotationMappingDriver($namespaces, $directories));
}
}
答案 1 :(得分:0)
只需使用@Repository注释
例如:
@ORM\Entity(repositoryClass="myorg\entities\Repository\FooRepository")