phinx是webman中用于数据库版本化管理与跨环境同步的迁移工具,需安装robmorgan/phinx和x2nx/webman-migrate插件,配置phinx.yml文件,通过php webman migrate等命令执行迁移、回滚及状态校验。

如果您在 Webman 框架中需要对数据库结构进行版本化管理与跨环境同步,但尚未配置或执行过迁移操作,则可能是由于 Phinx 未正确集成、配置文件缺失或命令未识别所致。以下是针对 Webman 框架的 Phinx 数据库迁移部署方案:
一、安装 Phinx 及 Webman 迁移插件
Phinx 是独立于框架的迁移工具,需单独引入;Webman 生态中推荐使用社区维护的迁移插件以统一命令入口并适配 console 组件。该插件支持 Phinx 原生命令封装,且兼容 Webman 的配置体系。
1、执行 Composer 命令安装 Phinx 核心包:composer require robmorgan/phinx --dev
2、安装 Webman 专用迁移插件:composer require x2nx/webman-migrate
3、确认插件已注册:检查 config/plugin/x2nx/webman-migrate/app.php 文件是否存在,且内容中 'enable' => true 已启用。
二、初始化并配置 Phinx 环境
Phinx 默认仅读取 YAML 格式配置文件(phinx.yml),若使用 PHP 格式(如 phinx.php),必须显式指定路径,否则连接参数将不生效。Webman 项目中建议采用 YAML 配置以确保兼容性,并与插件环境变量联动。
1、在项目根目录运行初始化命令:php vendor/bin/phinx init,生成默认 phinx.yml
2、编辑 phinx.yml,按实际数据库填写 development 和 production 环境配置,其中 adapter 必须为小写(如 mysql),host 在 Docker 环境中应填容器名而非 localhost
3、在 config/plugin/x2nx/webman-migrate/app.php 中设置 'driver' => 'phinx',确保插件调用 Phinx 命令而非 Laravel Migrate。
三、创建并编写迁移文件
迁移文件是 PHP 类,定义 up() 与 down() 方法,分别对应结构变更与逆向操作。文件命名须严格遵循时间戳前缀规则,确保执行顺序可预测;一旦提交至版本库,禁止修改已有文件内容,仅可通过新增迁移修正问题。
1、执行命令生成迁移类:php vendor/bin/phinx create CreateUserTable
ApiPost是一个支持团队协作,支持模拟POST、GET、PUT等常见请求,并可直接生成文档的API调试、管理工具,ApiPost是后台接口开发者或前端、接口测试人员的工作必备工具。快速生成、一键导出API文档。感兴趣的朋友快来下载吧。软件说明ApiPost官方版是一款十分出色的接口调试与文档生成工具,ApiPost官方版界面美观大方,功能强劲实用,支持团队协作,支持模拟POST、GET、PUT等常见请求,是后台接口开发者或前端、接口测试人员的工作必备工具。软件特色更方便支持接口调试的同时快速生成、一键
2、确认文件落于 database/migrations/ 目录下,文件名形如 20260521191600_create_user_table.php
3、在 up() 方法中使用 $table->create() 或 $table->addColumn() 编写建表逻辑,在 down() 中调用 $schema->dropTable() 实现完全可逆。
四、执行迁移与状态校验
Phinx 通过 phinxlog 表记录已执行版本,避免重复运行;执行前会自动检测当前环境数据库连接可用性及迁移文件完整性。若某次迁移失败,后续命令将拒绝执行,直至手动修复或跳过该版本。
1、运行全部待执行迁移:php vendor/bin/phinx migrate -e development
2、查看当前迁移状态:php vendor/bin/phinx status -e development,输出中 up 表示已执行,down 表示待执行
3、回滚至上一版本:php vendor/bin/phinx rollback -e development;回滚至初始状态:php vendor/bin/phinx rollback -e development -t 0
五、集成 Webman CLI 统一调用
Webman-migrate 插件将 Phinx 命令注入 Webman 自带的 CLI 入口,使迁移操作与框架生命周期一致,支持配置热加载与环境变量自动注入。该方式屏蔽了 vendor 路径细节,便于 CI/CD 流水线标准化调用。
1、确认 config/plugin/x2nx/webman-migrate/app.php 中 'enable' => true
2、执行迁移命令:php webman migrate(等效于 php vendor/bin/phinx migrate)
3、执行回滚命令:php webman migrate:rollback;查看状态:php webman migrate:status










