# Phinx迁移生成器 **Repository Path**: zsping1989/phinx-migrations-generator ## Basic Information - **Project Name**: Phinx迁移生成器 - **Description**: Phinx迁移生成器 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-18 - **Last Updated**: 2026-10-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # laraveladmin/phinx-migrations-generator > Dev-only wrapper around [`odan/phinx-migrations-generator`](https://packagist.org/packages/odan/phinx-migrations-generator) > for ThinkPHP projects using `topthink/think-migration`. ## 为什么需要这个包 `topthink/think-migration` 自带一份**改造过的 Phinx**,并把它挂在 `Phinx\` 命名空间下; `odan/phinx-migrations-generator` 依赖上游 `robmorgan/phinx`,同样使用 `Phinx\`。 把两者装进同一个 Composer autoloader 时,`Phinx\Migration\Manager` 只会解析到其中一个: Generator 传 Symfony Input,却命中 `think-migration` 的 `think\console\Input` 版本,直接报: ```text TypeError: Phinx\Migration\Manager::__construct(): Argument #2 ($input) must be of type think\console\Input, Symfony\Component\Console\Input\ArgvInput given ``` 所以本包**不把 odan/Phinx 放进主工程 vendor**。它只提供一个薄命令: 1. 在应用 `runtime/phinx-generator` 下创建**独立 Composer 工程**; 2. 首次运行时安装 `odan/phinx-migrations-generator` 到该目录的独立 `vendor`; 3. 用子进程执行隔离的 `phinx-migrations`,主工程 autoloader 完全不参与。 ## 安装 ```bash composer require --dev laraveladmin/phinx-migrations-generator ``` 在应用根目录的 `composer.json` 注册命令(可选但推荐): ```json { "scripts": { "migration:generate": "@php vendor/bin/phinx-migrations generate" } } ``` > 生产部署使用 `composer install --no-dev` 时,本包不会被安装。 ## 使用 ```bash # 从现有数据库生成迁移(首次会安装隔离依赖) composer migration:generate -- --name=AddFooTable # 等价于直接调用 bin vendor/bin/phinx-migrations generate --name=AddFooTable # 使用自定义 Phinx 配置 vendor/bin/phinx-migrations generate -c /path/to/phinx.php -p php # 只生成到临时目录(不影响 database/migrations) vendor/bin/phinx-migrations generate --path=/tmp/migrations --name=Smoke ``` 默认行为: - 读取应用根目录的 `composer.json` / `think` 判断应用根; - 读取 `server/.env` 或工作区根 `.env` 的 `DB_*`; - 生成 `runtime/phinx-generator/phinx.php`(含 DB 凭证,权限 `0600`); - migration 输出到 `server/database/migrations`; - `schema.php` 留在 `runtime/phinx-generator`,不会进入仓库。 首次运行会自动执行: ```bash cd /runtime/phinx-generator composer install --no-interaction --no-progress ``` ## 可配置环境变量 | 变量 | 作用 | |---|---| | `ZHIRUIHOU_APP_ROOT` | 显式指定 ThinkPHP 应用根(含 `composer.json` + `think`) | | `ZHIRUIHOU_PHINX_RUNTIME` | 显式指定隔离运行时目录(默认 `/runtime/phinx-generator`) | | `COMPOSER_BINARY` | 显式指定 composer 可执行文件 | ## 限制 - 仅用于开发环境;不要把生成器加入生产依赖; - 首次运行需要网络安装 `odan/phinx-migrations-generator`; - 隔离运行时目录不纳入版本控制; - 生成迁移后请人工审查:生成器是 schema diff,不保证业务语义/数据迁移正确。 ## License MIT