本文目录导读:

在 Laravel 中,回滚(rollback)通常不使用标签(tag)来控制。
Laravel 的迁移回滚机制基于批次数(batch number)和文件时间戳,而不是标签。
回滚的核心概念
- 每次执行
php artisan migrate,Laravel 会在migrations表中记录一个递增的 batch 编号。 - 回滚默认回滚 最近一批(batch)的迁移(即最后一个 batch 的所有迁移)。
- 回滚时不涉及标签。
常见回滚命令
# 回滚最近一批迁移 php artisan migrate:rollback # 回滚多批(例如回滚最近 3 批) php artisan migrate:rollback --step=3 # 回滚所有迁移(重置数据库) php artisan migrate:reset # 完全回滚重新迁移 php artisan migrate:refresh
标签(Tag)是用于“迁移分组”,不是“回滚”
从 Laravel 8.x 开始,可以在迁移命令中添加 --tag 选项,用于只执行特定标签的迁移:
# 仅执行标记为 "user-updates" 的迁移 php artisan migrate --tag=user-updates
但回滚不支持 --tag。
如果对某个标签的迁移执行 migrate:rollback,它会回滚整个批次,而不是只回滚该标签下的迁移。
如果你想“只回滚某些迁移”怎么办?
Laravel 没有原生支持按标签回滚,但可以通过以下方式实现:
使用 --path 限定目录
php artisan migrate:rollback --path=/database/migrations/特定文件夹
手动指定回滚(谨慎操作)
用 migrate:reset 重置所有迁移,然后指定 --tag 重新跑需要的迁移(不推荐生产环境)。
创建自定义命令
通过 DB::table('migrations') 获取记录,手动删除对应迁移记录并回滚文件。
总结对比
| 操作 | 支持 --tag |
说明 |
|---|---|---|
migrate(执行) |
✅ 支持 | 只执行指定标签的迁移 |
migrate:rollback(回滚) |
❌ 不支持 | 回滚整个批次 |
migrate:reset(重置) |
❌ 不支持 | 删除所有迁移记录并回滚 |
migrate:refresh(刷新) |
❌ 只支持 --path |
重置后重新执行(可配合 --seed) |
Laravel 使用批次+时间戳管理回滚,而标签只用于执行迁移时的筛选,不能用于回滚方向的控制。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播