首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >during与表结构变化中的Mysql数据迁移

during与表结构变化中的Mysql数据迁移
EN

Stack Overflow用户
提问于 2018-03-07 23:47:05
回答 2查看 1.8K关注 0票数 0

有两个实体User和Company。公司有user_id。

现在表格结构发生了变化,接下来一个用户可以代表许多公司,反之亦然(多对多,例如一对多-多对一)。这在中间引入了带有字段user_id、company_id和role的CompanyRepresentative实体。随着这一变化,Companies user_id将被删除。

如何针对这种情况编写数据迁移脚本?对于当前存在的每个公司,必须有连接同一用户和当前连接的公司的CompanyRepresentative条目。

环境为symfony 4应用程序,带有Doctrine和Mysql。

EN

回答 2

Stack Overflow用户

发布于 2018-03-09 17:54:05

主义迁移有preUppostUp两个函数。在preUp中,可以选择所有需要的数据,在postUp中,可以在数据库结构更改后将这些数据插入到正确的位置。

例如

代码语言:javascript
复制
public function preUp(Schema $schema)
{
    parent::preUp($schema);
    $query = "SELECT id, user_id FROM company";
    $data  = $this->connection->prepare($query);
    $data->execute();
    foreach ($data as $row) {
        $userId         = $row['id'];
        $companyId         = $row['user_id'];
        $this->customSQL[] = "($userId, $companyId)";
    }
}

public function up(Schema $schema)
{
    //Change the schema
}

public function postUp(Schema $schema)
{
    parent::postUp($schema);

    $SQL = 'INSERT INTO company_rep (user_id, company_id) VALUES ' . implode(', ', $this->customSQL);

    $this->connection->executeQuery($SQL);
}
票数 2
EN

Stack Overflow用户

发布于 2018-03-08 00:06:35

您必须使用DoctrineMigrationBundle来完成此操作。看看文档here,你应该不会受到影响。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49155980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档