You need to enable JavaScript to run this app. Laravel迁移中自定义up操作对应的down回滚方法如何编写
优惠活动
大模型
产品
解决方案
定价
更多

Laravel迁移中自定义up操作对应的down回滚方法如何编写

完整可运行的down回滚代码

回滚逻辑需要严格对应up的所有操作,且执行顺序与up逆序匹配,避免依赖报错。

对应up操作的反向执行逻辑

  1. 先恢复up中删除的lr2.id关联mk.id的外键约束,与原始建表定义完全一致
  2. 再移除up中为mk.kode_mk新增的唯一约束
  3. 最后删除up中为mk新增的Semester_TA字段

代码实现

public function down()
{
    // 恢复lr2表的原始外键约束
    Schema::table('lr2', function(Blueprint $table) {
        $table->foreign('id')->references('id')->on('mk');
    });

    // 反向操作mk表的两项变更
    Schema::table('mk', function(Blueprint $table) {
        // 移除kode_mk的唯一约束
        $table->dropUnique(['kode_mk']);
        // 删除新增的Semester_TA字段
        $table->dropColumn('Semester_TA');
    });
}

关键注意点

  • dropUnique(['kode_mk']) 会自动匹配Laravel默认生成的约束命名规则(表名_字段名_unique),不需要手动硬编码约束名,跨数据库兼容性更好
  • 外键恢复的逻辑完全复用原始建表的代码,回滚后的表结构与变更前完全一致
  • 操作顺序严格按照up的逆序执行:优先恢复最后修改的lr2表约束,再处理mk表的字段、约束变更,避免因依赖关系导致回滚失败

内容的提问来源于stack exchange,提问作者john_smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.28 22:54:00