微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如果我们有多个数据库和连接,如何加载教义装置

如何解决如果我们有多个数据库和连接,如何加载教义装置

我使用了此文档:https://symfony.com/doc/4.4/doctrine/multiple_entity_managers.html

所以现在我可以像这样创建名为legacy和Project的新数据库

doctrince.yaml:

doctrine:
  dbal:
    default_connection: legacy
    connections:
      legacy:
        driver: pdo_MysqL
        host: "%env(database_host)%"
        port: "%env(database_port)%"
        dbname: "%env(database_name)%"
        user: "%env(database_user)%"
        password: "%env(database_password)%"
        charset: UTF8
      project:
        driver: pdo_MysqL
        host: "%env(database_host_project)%"
        port: "%env(database_port_project)%"
        dbname: "%env(database_name_project)%"
        user: "%env(database_user_project)%"
        password: "%env(database_password_project)%"
        charset: UTF8
  orm:
    default_entity_manager: legacy
    entity_managers:
      legacy:
        connection: legacy
        mappings:
          Legacy:
            is_bundle: false
            type: annotation
            dir: "%kernel.project_dir%/..."
            prefix: '...'
            alias: Legacy
      project:
        connection: project
        auto_mapping: true
        mappings:
          Project:
            is_bundle: false
            type: annotation
            dir: "%kernel.project_dir%/src/Entity"
            prefix: 'App\Entity'
            alias: Project

现在我有几个Fixture类,它们都相互依赖,还有一些将为旧版创建Fixture,一些为项目创建。

现在我的问题是我何时做:

PHP bin/console doctrine:fixtures:load --em=legacy

它运行项目的附件,但不运行捆绑包的附件。 然后我得到这个错误

在链配置的名称空间中找不到类..

我的问题是现在如何在具有多个连接的多个数据库上加载灯具。 预先感谢。

解决方法

您应该阅读此文档:https://symfony.com/doc/current/doctrine/multiple_entity_managers.html

我认为这可能会解决您的问题,因为这正是您要尝试做的事情。

如果您必须为旧版创建固定装置,只需使用:

$entityManager = $this->getDoctrine()->getManager('legacy');`

其他是否用于项目

$entityManager = $this->getDoctrine()->getManager('project');`

此外,如果您更改doctrine.dbal.default_connection,entityManager将针对定义的连接运行。

因此,您可以尝试创建group of fixtures

然后为project运行固定装置:

  1. 编辑测试环境的配置
#config/packages/test/doctrine.yaml
doctrine:
    dbal:
        default_connection: 'project'
  1. 然后运行“项目”组的夹具
> php bin/console doctrine:fixtures:load --group=project

然后为“传统”做同样的事情

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。