fiisoft/phinx

控制台命令:用于在自定义控制台应用程序中使用Phinx库的控制台命令(基于symfony/console包)。

1.9.2 2018-02-21 22:58 UTC

This package is not auto-updated.

Last update: 2024-09-29 04:08:37 UTC


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(这是我更喜欢的做法)

如您所见,这有点疯狂。