Laravel迁移中自定义up操作对应的down回滚方法如何编写
完整可运行的down回滚代码
回滚逻辑需要严格对应up的所有操作,且执行顺序与up逆序匹配,避免依赖报错。
对应up操作的反向执行逻辑
- 先恢复up中删除的
lr2.id关联mk.id的外键约束,与原始建表定义完全一致 - 再移除up中为
mk.kode_mk新增的唯一约束 - 最后删除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
相关产品推荐
相关产品推荐

