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


how to have different classes of the same bundle use different document manager

我有两个文档管理器dm1和dm2,以及一个名为AcmeBundle的捆绑包,在捆绑包中,我有很多类,有些以"FirstClass"开头,有些以"SecondClass"开头,还有一些其他类。例如,我有

头等舱1.php,

头等舱2.php,

二等1.php,

二等舱2.php

随机.php

我需要的是类以 dm1 和 dm2 管理的"FirstClass"和"SecondClass"开头,以及仅由 dm1 管理的其他类

我试过使用prifix

    dm1:
         connection: dm1
         ...
         auto_mapping: false
         mappings:
             MyAcmeBundle: ~
     dm2:
         connection: dm2
         ...
         auto_mapping: false
         mappings:
             MyAcmeBundle:
                 prefix: My'AcmeBundle'Document'FirstClass

但它仅适用于一个前缀,如果我添加另一个前缀,它将不起作用。有人知道如何做到这一点吗?

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

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(在我看来(更干净,更好地支持。