laraveladmin / phinx-migrations-generator
Dev-only wrapper around odan/phinx-migrations-generator with an isolated runtime, avoiding think-migration's bundled Phinx fork.
Package info
gitee.com/zsping1989/phinx-migrations-generator.git
pkg:composer/laraveladmin/phinx-migrations-generator
Requires
- php: >=8.2
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is not auto-updated.
Last update: 2026-10-19 03:29:36 UTC
README
Dev-only wrapper around
odan/phinx-migrations-generatorfor ThinkPHP projects usingtopthink/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 版本,直接报:
TypeError: Phinx\Migration\Manager::__construct(): Argument #2 ($input)
must be of type think\console\Input, Symfony\Component\Console\Input\ArgvInput given
所以本包不把 odan/Phinx 放进主工程 vendor。它只提供一个薄命令:
- 在应用
runtime/phinx-generator下创建独立 Composer 工程; - 首次运行时安装
odan/phinx-migrations-generator到该目录的独立vendor; - 用子进程执行隔离的
phinx-migrations,主工程 autoloader 完全不参与。
安装
composer require --dev laraveladmin/phinx-migrations-generator
在应用根目录的 composer.json 注册命令(可选但推荐):
{
"scripts": {
"migration:generate": "@php vendor/bin/phinx-migrations generate"
}
}
生产部署使用
composer install --no-dev时,本包不会被安装。
使用
# 从现有数据库生成迁移(首次会安装隔离依赖)
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,不会进入仓库。
首次运行会自动执行:
cd <app>/runtime/phinx-generator
composer install --no-interaction --no-progress
可配置环境变量
| 变量 | 作用 |
|---|---|
ZHIRUIHOU_APP_ROOT | 显式指定 ThinkPHP 应用根(含 composer.json + think) |
ZHIRUIHOU_PHINX_RUNTIME | 显式指定隔离运行时目录(默认 <app>/runtime/phinx-generator) |
COMPOSER_BINARY | 显式指定 composer 可执行文件 |
限制
- 仅用于开发环境;不要把生成器加入生产依赖;
- 首次运行需要网络安装
odan/phinx-migrations-generator; - 隔离运行时目录不纳入版本控制;
- 生成迁移后请人工审查:生成器是 schema diff,不保证业务语义/数据迁移正确。
License
MIT