如何从共享Symfony包中的另一个存储库加载Doctrine实体?

时间:2017-05-08 17:49:44

标签: php symfony doctrine

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

src
    Entity
        Foo.php
        Bar.php

我创建了一个共享的Symfony包,需要在composer.json中使用此repo:

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

如何在此Symfony包中注册实体,以便它们立即可用于包含它的任何项目?我想避免父项目必须明确列出其orm配置中的每个实体。

2 个答案:

答案 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")