# matrix_migration **Repository Path**: adminmatrix/matrix_migration ## Basic Information - **Project Name**: matrix_migration - **Description**: thinkphp 数据库迁移工具 支持 多应用模式 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-27 - **Last Updated**: 2025-05-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Matrix Migration 一个基于 Phinx 的数据库迁移工具,专为 ThinkPHP 框架设计。 ## 功能特点 - 基于 Phinx 框架的数据库迁移工具 - 支持 ThinkPHP 框架集成 - 提供命令行工具进行数据库迁移管理 - 支持数据库版本控制 - 支持迁移回滚 - 自动执行迁移脚本 ## 环境要求 - PHP >= 8.3 - ThinkPHP 框架 - MySQL 或其他支持的数据库 ## 安装 通过 Composer 安装: ```bash composer require adminmatrix/matrix_migration ``` ## 使用教程 ### 1. 创建迁移文件 ```bash php think migrate:create CreateUsersTable [--app=app_name] [--connection=connection_name] ``` 参数说明: - `--app`: 指定应用名称,默认为空(使用默认应用) - `--connection`: 指定数据库连接,默认为配置文件中的默认连接 这将在 `database/migrations` 目录下创建一个新的迁移文件。 ### 2. 编写迁移文件 在生成的迁移文件中,您可以定义 `up()` 和 `down()` 方法: ```php table('users'); $table->addColumn('username', 'string') ->addColumn('password', 'string') ->addColumn('email', 'string') ->addColumn('created_at', 'datetime') ->addColumn('updated_at', 'datetime') ->create(); } public function down() { $this->table('users')->drop()->save(); } } ``` ### 3. 执行迁移 ```bash php think migrate:run [--app=app_name] [--connection=connection_name] [--target=version] ``` 参数说明: - `--app`: 指定应用名称,默认为空(使用默认应用) - `--connection`: 指定数据库连接,默认为配置文件中的默认连接 - `--target`: 指定要迁移到的版本号,默认为最新版本 ### 4. 回滚迁移 ```bash php think migrate:rollback [--app=app_name] [--connection=connection_name] [--target=version] [--date=YYYY-MM-DD] ``` 参数说明: - `--app`: 指定应用名称,默认为空(使用默认应用) - `--connection`: 指定数据库连接,默认为配置文件中的默认连接 - `--target`: 指定要回滚到的版本号 - `--date`: 指定要回滚到的日期 ### 5. 查看迁移状态 ```bash php think migrate:status [--app=app_name] [--connection=connection_name] [--format=format] ``` 参数说明: - `--app`: 指定应用名称,默认为空(使用默认应用) - `--connection`: 指定数据库连接,默认为配置文件中的默认连接 - `--format`: 输出格式,可选值:json, array, 默认为表格格式 ### 6. 重置迁移 ```bash php think migrate:reset [--app=app_name] [--connection=connection_name] ``` 参数说明: - `--app`: 指定应用名称,默认为空(使用默认应用) - `--connection`: 指定数据库连接,默认为配置文件中的默认连接 ### 7. 刷新迁移 ```bash php think migrate:refresh [--app=app_name] [--connection=connection_name] [--seed] ``` 参数说明: - `--app`: 指定应用名称,默认为空(使用默认应用) - `--connection`: 指定数据库连接,默认为配置文件中的默认连接 - `--seed`: 是否同时运行数据填充 ## 常用命令 | 命令 | 描述 | 参数 | |------|------|------| | `migrate:create` | 创建新的迁移文件 | `--app`, `--connection` | | `migrate:run` | 执行所有未执行的迁移 | `--app`, `--connection`, `--target` | | `migrate:rollback` | 回滚最后一次迁移 | `--app`, `--connection`, `--target`, `--date` | | `migrate:reset` | 回滚所有迁移 | `--app`, `--connection` | | `migrate:refresh` | 重置并重新运行所有迁移 | `--app`, `--connection`, `--seed` | | `migrate:status` | 显示迁移状态 | `--app`, `--connection`, `--format` | ## 注意事项 1. 迁移文件命名建议使用驼峰命名法 2. 每次迁移后会自动记录在 `phinxlog` 表中 3. 确保数据库配置正确 4. 建议在开发环境中测试迁移脚本 5. 使用 `--app` 参数可以指定多应用场景下的迁移 6. 使用 `--connection` 参数可以切换不同的数据库连接 ## 常见问题 1. **迁移失败怎么办?** - 检查数据库配置是否正确 - 查看错误日志 - 确保数据库用户有足够的权限 - 检查迁移文件语法是否正确 2. **如何修改迁移文件?** - 不建议直接修改已执行的迁移文件 - 创建新的迁移文件来修改表结构 - 使用 `migrate:rollback` 回滚后再修改 3. **如何添加种子数据?** - 使用 `migrate:seed` 命令 - 在 `database/seeds` 目录下创建种子文件 - 使用 `migrate:refresh --seed` 同时执行迁移和填充 4. **如何处理多应用场景?** - 使用 `--app` 参数指定应用名称 - 迁移文件会保存在对应应用的 `database/migrations` 目录下 ## 贡献 欢迎提交 Issue 和 Pull Request。 ## 许可证 MIT License