如何让同一个包的不同类使用不同的文档管理器

时间:2016-05-06 21:45:46

标签: php symfony doctrine-odm

我有两个文件管理器dm1和dm2,以及一个名为AcmeBundle的软件包,在软件包中,我有很多类,一些以“FirstClass”开头,一些以“SecondClass”和其他一些类开头。例如我有

FirstClass1.php,

FirstClass2.php,

SecondClass1.php,

SecondClass2.php

Random.php

我需要的是类以“FirstClass”开头,“SecondClass”由dm1和dm2管理,其他类只由dm1管理

我尝试使用prifix

    dm1:
         connection: dm1
         ...
         auto_mapping: false
         mappings:
             MyAcmeBundle: ~

     dm2:
         connection: dm2
         ...
         auto_mapping: false
         mappings:
             MyAcmeBundle:
                 prefix: My\AcmeBundle\Document\FirstClass

但它只适用于一个前缀,如果我添加另一个前缀,它将无效。 谁知道怎么做?

1 个答案:

答案 0 :(得分:0)

您可以为文档管理器定义多个映射,每个映射都有不同的前缀:

dm2:
     connection: dm2
     ...
     auto_mapping: false
     mappings:
         FirstClasses:
             prefix: My\AcmeBundle\Document\FirstClass
         SecondClasses:
             prefix: My\AcmeBundle\Document\SecondClass

缺点是,如果你使用Bundle:DocumentName符号,你需要记住正确的前缀,但是Doctrine与DocumentName::class完全正常,这在我看来更清洁,并且更好地得到了PHPStorm的支持。