我在config.yml中有两个数据库连接和两个实体管理器。每个都捆绑在一起。
我遇到的问题是运行单元测试,首先是创建一个空白数据库并加载数据。它创建了两个数据库,但我在每个数据库中都获得了两组表,而不是一个数据库中的一组实体和另一个数据库中的一组实体。由于两个数据库连接并不常见,因此我无法找到一些帮助。
doctrine:
dbal:
default_connection: default
...
connections:
default:
(conectioninfo)
seconddb:
(connectioninfo)
orm:
default_entity_manager: default
auto_generate_proxy_classes: "%kernel.debug%"
entity_managers:
default:
connection: default
mappings:
MycompanyCoreBundle: ~
seconddb:
connection: seconddb
mappings:
MycomanySecondBundle: ~
运行单元测试时,我的行是:
php app/console doctrine:database:drop --force --env=test --connection=default
php app/console doctrine:database:create --env=test --connection=default
php app/console doctrine:schema:drop --force --no-interaction --env=test --em=default
php app/console doctrine:schema:update --force --no-interaction --env=test --em=default
php app/console doctrine:database:drop --force --env=test --connection=seconddb
php app/console doctrine:database:create --env=test --connection=seconddb
php app/console doctrine:schema:drop --force --no-interaction --env=test --em=seconddb
php app/console doctrine:schema:update --force --no-interaction --env=test --em=seconddb
运行所有这些时,输出为
Successfully deleted cache entries.
Dropping database schema...
Database schema dropped successfully!
Updating database schema...
Database schema updated successfully! "91" queries were executed
问题是这91个查询是两个包中的两个实体文件夹的组合。我错过了某个地方将它们分开指出,以便它们进入各自的数据库。
答案 0 :(得分:1)
我最终找到了答案。没有办法为迁移指定数据库,因此您基本上必须在EM上运行两次迁移,然后测试数据库连接。
在每个迁移文件中,如果它不正确,您可以放入一行来忽略它。因此,有些文件有
$this->skipIf( $this->connection->getDatabase() != 'dbone', 'Skipping database.' );
和其他人
$this->skipIf( $this->connection->getDatabase() != 'dbtwo', 'Skipping database.' );
然后当你运行这些命令时:
doctrine:migrations:migrate --em="default"
doctrine:migrations:migrate --em="orm"
两者都将遍历所有迁移文件,但不适用于该情况的文件将被忽略。