问题描述
我使用了此文档: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
运行固定装置:
- 编辑测试环境的配置
#config/packages/test/doctrine.yaml
doctrine:
dbal:
default_connection: 'project'
- 然后运行“项目”组的夹具
> php bin/console doctrine:fixtures:load --group=project
然后为“传统”做同样的事情