mysql - 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,所以不知道任何来龙去脉。
解决方案
因此,一位同事提供了帮助,我们能够使用以下迁移进行调整。
您将找到使用目标键的所有表并在那里更新它:
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();
}
推荐阅读
- python - FFT 噪声频率去除
- vba - 在访问表单中输入 ID 时如何查看名称
- javascript - 具有作为 prop 传递到组件中的数据属性的对象不是 Vue 的 kebap-cases
- google-apps-script - 基于另一个单元格值保护/取消保护范围
- node.js - 如何在 Firebase 云功能中设置节点选项?
- sql - SQL Parse xml 列数据
- docker - 错误:无效或损坏的 jarfile /app.jar
- javascript - WebGL 2D 相机缩放到鼠标点
- javascript - 在 Typescript Angular 中格式化时间
- sql - 将 CSV 从 Linux 导入 Azure SQL Server