用途:在实体映射发生变更(新增字段、索引或表)时生成并管理数据库结构迁移,实现 schema 版本化,并处理依赖、回滚与生产部署。
主要能力:生成与审查迁移文件;查看迁移状态与预演;执行迁移与回滚;配置 doctrine_migrations.yaml(transactional、all_or_nothing、enable_service_migrations);多实体管理器时通过 --em 指定。
默认工作流:先修改实体映射,再用 make:migration 或 doctrine:migrations:diff 生成迁移;逐行检查 addSql(),注意重命名可能表现为先删除后新增、索引变动常见;编写能真正还原 up() 的 down(),每个迁移只处理一件事;用 doctrine:migrations:status 查看状态,用 doctrine:migrations:migrate --dry-run 预览,再执行 doctrine:migrations:migrate;回滚用 doctrine:migrations:migrate prev 或 doctrine:migrations:execute --down。
使用限制与防护:不要修改已应用的迁移,应新增迁移;diff 生成的迁移只保留结构变更,数据变更放入独立的幂等迁移或命令;保持 up(Schema $schema): void 与 down(Schema $schema): void 的类型签名;all_or_nothing 主要在 PostgreSQL 上有效,因为多数 MySQL DDL 会隐式提交。
适用场景:映射变更需要迁移、审查 make:migration 或 doctrine:migrations:diff 生成的文件、回滚版本、部署待执行迁移到生产、调整迁移配置。深度实现细节可查阅 reference.md。
输出约定:提供已审查的 up() 与可用的 down() 迁移文件;输出 doctrine:migrations:status 与 dry-run 结果及回滚命令;说明对 doctrine_migrations.yaml 的任何改动及原因。相关内容对应 bundle 4.x、library 3.9。