【问题标题】:How to select data from old database and insert it into new one within doctrine migration?如何在学说迁移中从旧数据库中选择数据并将其插入新数据库?
【发布时间】:2020-03-01 19:21:39
【问题描述】:

我在 zend 框架 3 (MVC) 中使用“doctrine/DoctrineORMModule”模块。我已经配置了 '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-framework doctrine-orm doctrine zend-framework3 doctrine-migrations


    【解决方案1】:

    如果我理解正确,您希望将 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

    【讨论】:

    • 如果我将在 root db 用户下运行该查询会怎样?这是更好的选择吗?
    • 因为您为两个实体管理器使用单独的配置,所以不需要使用 root 用户。您可以只使用不同的用户。
    猜你喜欢
    • 2015-09-22
    • 1970-01-01
    • 1970-01-01
    • 2011-05-17
    • 2019-09-12
    • 2010-12-07
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多