在Hyperf框架中进行数据迁移需通过PhperDbMigrate组件实现,其基于Phinx库提供结构化数据库变更管理能力。以下是具体操作步骤:
一、安装与配置
- 安装组件:在项目根目录执行composer require phper/migrate --dev,添加开发依赖。
- 配置注解处理器:修改config/autoload/annotations.php文件,在ignore_annotations中添加PhperMigrateAnnotationsAutoAnnotationProcessor::class,避免注解扫描冲突。
- 初始化迁移环境:运行php bin/hyperf.php migrate:init,生成migrations目录及配置文件config/autoload/migrations.php,其中包含数据库连接信息(需根据实际环境修改)。
二、创建迁移文件
- 生成迁移模板:执行php bin/hyperf.php migrate:create 迁移名称(如create_users_table),生成形如20220208123456_create_users_table.php的文件。
- 定义变更逻辑:
up()方法:编写正向变更(如创建表)。示例中通过$this->schema->create('users', function ($table) {...})定义了包含id(自增主键)、name(字符串)、email(字符串)和timestamps(创建/更新时间)的表结构。
down()方法:编写逆向操作(如删除表)。示例中通过$this->schema->drop('users')实现回滚。
三、执行与回滚迁移
- 执行迁移:运行php bin/hyperf.php migrate:migrate,组件会按文件名时间戳顺序执行所有未应用的迁移文件,更新数据库结构。
- 回滚迁移:执行php bin/hyperf.php migrate:rollback,撤销最后一次迁移操作(若需回滚多步,可添加--target参数指定版本)。
四、关键注意事项
- 环境区分:建议为不同环境(开发、测试、生产)配置独立的数据库连接,避免迁移冲突。
- 版本控制:迁移文件需纳入版本管理(如Git),确保团队环境一致性。
- 字段类型:Hyperf支持MySQL、PostgreSQL等主流数据库,字段定义需参考对应驱动的语法(如timestamps()在MySQL中生成created_at和updated_at字段)。
通过PhperDbMigrate组件,开发者可实现数据库变更的版本化管理,降低直接操作数据库的风险,提升协作效率。 详细参数说明可参考
Hyperf官方文档
或PhperMigrate组件文档
。