我从几天开始与Zend 2合作,我有点麻烦。我们正在使用学说,并试图从实体中生成数据库模式。我在每个模块中指定,其中学说应使用每个模块的Module.config.php文件找到实体。目前,我有2个不同的模块。
module.config.php(mailTemplates(module))
'doctrine' => array(
'driver' => array(
'application_entities' => array(
'class' => 'DoctrineORMMappingDriverAnnotationDriver',
'cache' => 'array',
'paths' => (__DIR__ . '/../src/MailTemplates/Model')
),
'orm_default' => array(
'drivers' => array(
'MailTemplatesModel' => 'application_entities'
),
),
),
),
和module.config.php(application(module))
'doctrine' => array(
'driver' => array(
'application_entities' => array(
'class' => 'DoctrineORMMappingDriverAnnotationDriver',
'cache' => 'array',
'paths' => (__DIR__ . '/../src/Application/Entity')
),
'orm_default' => array(
'drivers' => array(
'ApplicationEntity' => 'application_entities'
),
),
),
),
);
当我执行命令以生成实体生成架构时(./vendor/bin/doctrine-module orm:schema-tool:create),它仅创建mailTemplate表,而忽略了应用程序模块。如果我评论MailTemplate模块的模块的行。Config.php,然后再次执行命令,我可以成功地创建了来自应用程序模块实体的表。因此,我想以某种方式覆盖了2个模块中的信息。
我需要从不同模块的不同实体生成DB Shema,但我不知道如何。
谢谢!
的原因是您将相同的名称设置为驱动程序。尽管Zend合并了配置,但它将覆盖具有相同名称的配置。
module.config.php(mailTemplates(module))
[...]
'drivers' => array(
'MailTemplatesModel' => 'application_entities' <-- rename this
)
[..]
module.config.php(application(module))
[...]
'drivers' => array(
'ApplicationEntity' => 'application_entities'
)
[..]
zf2 module.config.php文件未覆盖。ZF2将所有模块合并到一个文件中。
zend moduleManager listener configListener触发一个特殊事件,zend modulemanager moduleevent :: Event_merge_config在合并了所有配置后,但在传递给ServiceManager之前。通过收听此事件,您可以检查合并的配置并进行操作。
请参阅Zend合并配置文件https://framework.zend.com/manual/2.4/en/tutorials/config.advanced.html#configuration-configuration-mapper-table