Php 如果我们有多个数据库和连接,如何加载
我使用了以下文档: 现在我可以创建名为legacy和Project的新数据库,如下所示 doctrince.yaml:Php 如果我们有多个数据库和连接,如何加载,php,symfony,doctrine-orm,symfony4,fixtures,Php,Symfony,Doctrine Orm,Symfony4,Fixtures,我使用了以下文档: 现在我可以创建名为legacy和Project的新数据库,如下所示 doctrince.yaml: doctrine: dbal: default_connection: legacy connections: legacy: driver: pdo_mysql host: "%env(database_host)%" port: "%env(database_por
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类,它们都是相互依赖的,还有一些将为legacy创建Fixture,还有一些将为project创建Fixture
现在我的问题是我什么时候做:
php bin/console原则:fixture:load--em=legacy
它运行项目的AppFixture,但不运行捆绑包的AppFixture。
然后我得到这个错误:
全班。。在链配置的命名空间中找不到
我现在的问题是如何在具有多个连接的多个数据库上加载装置。
提前感谢。您应该阅读此文档: 我认为这可能会解决你的问题,因为这正是你想要做的 如果必须为旧设备创建夹具,只需使用:
$entityManager = $this->getDoctrine()->getManager('legacy');`
否则,如果是供项目使用
$entityManager = $this->getDoctrine()->getManager('project');`
此外,如果更改原则.dbal.default_连接
,entityManager将针对已定义的连接运行
因此,您可以尝试创建
然后运行项目的夹具
:
然后对“legacy”执行相同的操作但是对于我们正在使用的装置,
ObjectManager
,例如public function load(ObjectManager$manager):void{…
您是对的,我已经编辑了我的答案,希望它能对您有所帮助。
#config/packages/test/doctrine.yaml
doctrine:
dbal:
default_connection: 'project'
> php bin/console doctrine:fixtures:load --group=project