首页 > 解决方案 > Laravel:表内容更改,如何更新现有数据库外键

问题描述

我有一张名为业务影响的表,它的设置非常简单:

身份证、姓名、代码

它当前的内容是这样的:

1, Major,1
2, Medium,2
3, Minor,3
4, No Impact,4

现在,我在其中添加了另一列并更改了一些措辞:

1, Critical, 1
2, High, 2
3, Medium, 3
4, Low, 4
5, No Impact, 5

我们需要更新数据库中的所有表,以便新值反映在 UI 中:

主要 -> 高

中等 -> 中等

次要 -> 低

无影响 -> 无影响

是否可以运行迁移以在整个数据库中执行此更改?

谢谢,刚开始学习 Laravel,所以不知道任何来龙去脉。

标签: mysqllaravel

解决方案


因此,一位同事提供了帮助,我们能够使用以下迁移进行调整。

您将找到使用目标键的所有表并在那里更新它:

    public function up()
    {
        Schema::disableForeignKeyConstraints();

        DB::update("UPDATE events SET business_impact_id=5 WHERE business_impact_id=4");
        DB::update("UPDATE events SET business_impact_id=4 WHERE business_impact_id=3");
        DB::update("UPDATE events SET business_impact_id=3 WHERE business_impact_id=2");
        DB::update("UPDATE events SET business_impact_id=2 WHERE business_impact_id=1");

        DB::update("UPDATE event_scopes SET business_impact_id=5 WHERE business_impact_id=4");
        DB::update("UPDATE event_scopes SET business_impact_id=4 WHERE business_impact_id=3");
        DB::update("UPDATE event_scopes SET business_impact_id=3 WHERE business_impact_id=2");
        DB::update("UPDATE event_scopes SET business_impact_id=2 WHERE business_impact_id=1");

        $seeder = new BusinessImpactsTableSeeder();
        $seeder->run();

        Schema::enableForeignKeyConstraints();
    }

推荐阅读