首页 > 解决方案 > 如何在学说迁移中从旧数据库中选择数据并将其插入新数据库?

问题描述

我将'doctrine/DoctrineORMModule' 模块用于zend 框架3(MVC)。我已经配置了“orm_default”并且可以配置“orm_old”但不知道如何在迁移文件中使用“orm_old”。

我可以在迁移文件中执行此操作:


public function up(Schema $schema) : void
{
    $sql = "INSERT INTO `some_table` VALUES ('some_value','','',NULL,NULL,'1');";

    $this->addSql($sql);
//...

但总的来说,我需要运行这样的东西:

INSERT INTO DB2.T2(id, title, description) 
SELECT id, title, description FROM DB1.T1;

怎么做?

标签: zend-frameworkdoctrine-ormdoctrinezend-framework3doctrine-migrations

解决方案


如果我理解正确,您想将 Doctrine Migrations 用于两个数据库连接:orm_defaultorm_old.

这在 Doctrine 中是可能的,但在 Zend Framework DoctrineORMModule 中却不行。这在官方文档中很简短地提到:https ://github.com/doctrine/DoctrineORMModule/blob/master/docs/migrations.rst#multiple-migration-configurations

您可以做的最好的事情是使用具有相同数据库连接的两个单独的 cli-config 文件,并将迁移放在两个单独的文件夹中。然后,您可以使用“默认”原则 CLI 工具 (vendor/bin/doctrine migrations:migrate) 为两个连接运行迁移。

已请求将此功能添加到 DoctrineORMModule,但从未实现。你可以在这里阅读更多关于它的信息: https ://github.com/doctrine/DoctrineORMModule/issues/537


推荐阅读