如何解决如果我们有多个数据库和连接,如何加载教义装置
我使用了此文档: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
然后为“传统”做同样的事情
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。