我忘记提及外键时需要回滚一个特定的表。 我不希望所有表中的数据丢失。
我的框架是Laravel 5.4
先谢谢所有人
答案 0 :(得分:3)
迁移旨在按特定顺序应用和回滚。因此,没有“适当”的方式重新应用任意迁移。
无论如何,至少有两个选择:
“失败转发” - 创建后续迁移,创建必要的FK并应用它。如果您已经投入生产,这是唯一正确的方法。
如果您刚刚处于开发的早期阶段,并且不希望膨胀迁移目录,那么
答案 1 :(得分:2)
我这样做:
php artisan migrate
; 例如,如果您修改了名为“设置”的迁移,则需要从数据库和迁移表中删除该表,然后重新运行artisan命令。
答案 2 :(得分:1)
不幸的是,没有一个选项来回滚每个表的迁移。您只能使用step
参数回滚最新迁移或最后几次迁移。
但是,如果你真的需要,有一种hacky方式可以做到这一点。您可以将迁移表中的batch
值设置为比最近迁移更高的数量,仅用于要回滚的迁移。当您调用php artisan migrate:rollback
时,只有具有batch
值的特定迁移文件才会回滚。
答案 3 :(得分:1)
你可以
php artisan migrate:rollback --path=/database/migrations/your_file.php