如果我们有多个数据库和连接,如何加载条令固定装置



我使用了以下文档: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: 'AppEntity'
alias: Project

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

现在我的问题是什么时候做:

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

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

类。。在链配置的命名空间中找不到。。。。

我现在的问题是如何在具有多个连接的多个数据库上加载fixture。提前谢谢。

您应该阅读此文档: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将针对定义的连接运行。

所以您可以尝试创建一组固定装置。

然后运行project:的固定装置

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

然后对"遗留"做同样的事情

相关内容

  • 没有找到相关文章

最新更新