fiisoft / phinx
控制台命令:用于在自定义控制台应用程序中使用Phinx库的控制台命令(基于symfony/console包)。
Requires
- php: >=5.6.0
- fiisoft/basics: ^2.2
- robmorgan/phinx: ^0.9.1
- symfony/console: ^2.8.27
README
控制台命令:用于在自定义控制台应用程序中使用Phinx库的控制台命令(基于symfony/console包)。
我的建议是 - 如果你没有足够强大的心理免疫力来应对这样的糟糕代码,就不要使用它。
它包含Phinx命令的包装器
- breakpoint
- create
- migrate
- rollback
- seed:create
- seed:run
- status
- test
它还包含六个特殊命令(在Phinx中不可用)
- mark - 标记迁移为已迁移,而无需迁移(向phinxlog添加条目日志,使迁移看起来已迁移)
- unmark - 从phinxlog中删除条目日志,而无需回滚迁移(因此迁移将在下一次迁移时迁移)
- repeat - 即使迁移了,也会重复单个迁移(指定其版本号)
- revoke - 对单个迁移执行回滚(指定其版本号)
- remove - 从phinxlog中删除条目日志,并从磁盘删除相应的迁移文件
- cleanup - 从phinxlog中删除缺失迁移的条目(如果文件不可用)
此外,它还包含一个特殊的目的命令phinx,允许以特殊方式运行其他Phinx特定命令。
请注意,这个库使用自己的配置模式以及迁移类和它们的基抽象类的模板。
此自定义配置的主要目标是管理多个目标数据库(在各个环境中)的迁移。因此,配置被分组在称为“目标”的东西中。
以下是一些示例。
- 最简单的可能配置(也称为最小必需配置)
$config = new PhinxConfig([ 'local' => [ 'environments' => [ 'dev' => [ 'adapter' => 'pgsql', 'host' => 'localhost', 'name' => 'dbname', 'user' => 'username', 'pass' => 'password', ] ], ] ]);
这为名为local的一个目标创建了一个包含一个环境dev的配置。此目标的迁移文件将存储在(当前工作目录)/phinx/local/migrations
目录中。请注意,目标名称成为路径的一部分。
- 类似配置,但文件路径指定了包含迁移文件的目录,没有目标名称
$config = new PhinxConfig([ 'local' => [ 'paths_root' => __DIR__ . DIRECTORY_SEPARATOR . 'phinx', 'environments' => [ 'dev' => [ 'adapter' => 'pgsql', 'host' => 'localhost', 'name' => 'dbname', 'user' => 'username', 'pass' => 'password', ] ], ] ]);
在这种情况下,迁移文件的路径是__DIR__/phinx/migrations
- 路径中没有目标名称local。
- 创建最简单配置的第三种方式是指定迁移目录的路径如下
$config = new PhinxConfig([ 'defaults' => [ 'phinx_files' => __DIR__ . DIRECTORY_SEPARATOR . 'dev', ], 'local' => [ 'environments' => [ 'dev' => [ 'adapter' => 'pgsql', 'host' => 'localhost', 'name' => 'dbname', 'user' => 'username', 'pass' => 'password', ] ], ] ]);
这定义了所有目标的根文件夹。对于local的迁移文件路径现在是__DIR__/dev/local/migrations
。
要处理引用相同数据库的不同迁移集合,请使用
$config = new PhinxConfig([ 'defaults' => [ 'adapter' => 'pgsql', 'host' => 'localhost', 'name' => 'dbname', 'user' => 'username', 'pass' => 'password', ], 'alpha' => [ 'environments' => [ 'dev' => [ ], ], ], 'bravo' => [ 'environments' => [ 'dev' => [ ], 'default_migration_table' => 'phinx_migrations', ], ], ];
此配置定义了两个目标:alpha和
alpha的迁移文件将存储在(当前工作目录)/phinx/alpha/migrations
,Phinx使用的表名称为phinxlog
(默认)。
bravo的迁移文件将存储在(当前工作目录)/phinx/bravo/migrations
,Phinx使用的表名称为phinx_migrations
。
因为没有指定其他数据,所以两个目标将共享相同的数据库,因此可以处理同一数据库的多个迁移集合。
库还提供了一个bin/finx可执行文件。它的使用说明有点难以解释,因为它使用自己的参数模式。
以下是一些示例(假设配置中已定义了local目标)
bin/finx list
显示可用的命令列表bin/finx
与上面相同(默认为命令列表)bin/finx phinx
显示通用命令(phinx)的帮助bin/finx phinx local status
显示从本地环境迁移的状态bin/finx phinx local
与上述相同(默认命令为状态)bin/finx local
与上述相同(默认为状态,关键字phin可以省略)bin/finx phinx:status local
与上述相同(通过直接调用命令状态)
以下是一些使用不同方式从本地环境调用migrate命令的示例(它们都完全一样!)
bin/finx phinx local migrate -e dev
bin/finx phinx local dev migrate
bin/finx phinx local migrate
bin/finx phinx:migrate local -e dev
bin/finx phinx:migrate local dev
bin/finx phinx:migrate local
bin/finx local migrate -e dev
bin/finx local dev migrate
bin/finx local migrate
(这是我更喜欢的做法)
如您所见,这有点疯狂。