pyramid/symfony-commands

pyramid/symfony-commands是一个使用yramid/lib数据库迁移的symfony控制台库

2.0.0 2022-02-01 16:19 UTC

This package is not auto-updated.

Last update: 2024-09-25 04:43:18 UTC


README

设置

1. 创建配置

为脚本创建一个具有适当配置的可访问PHP文件

<?php

return [
    'migrations' => [
        'path' => __DIR__ . '/../../db/migrations',
        'namespace' => 'Migration',
        'template' => null,
    ],
    'seeds' => [
        'path' => __DIR__ . '/../../db/seeds',
        'namespace' => 'Seeds',
        'template' => null,
    ],
    'connection' => 'sqlite:' . __DIR__ . '/../../db/migration.sqlite',
];

示例相对于项目根目录 dev/db/config/migration.php.

connection可以是DSN或PDO实例。(https://php.ac.cn/manual/de/pdo.construct.php

2. 创建CLI脚本

根据配置文件,现在可以创建一个可执行CLI脚本,其中定义了命令类和相应的构造函数参数。

#!/usr/bin/env php
<?php

use Symfony\Component\Console\Application;
use Yramid\Migration\Create;
use Yramid\Seed\Create as CreateSeed;
use Yramid\Migration\Migrate;
use Yramid\Migration\Rollback;
use Yramid\Seed\Run;
use Yramid\Migration\Savepoint\Set;
use Yramid\Migration\Status;
use Yramid\Migration\Savepoint\Remove;
use Yramid\Yramid;

require_once __DIR__ . '/../../vendor/autoload.php';

try {
    $migrationConfig = __DIR__ . '/../db/config/migration.php';

    $yramid = new Yramid();
    $app = new Application();
    $app->addCommands([
        (new Create('dbm:create', $migrationConfig, $yramid)),
        (new Status('dbm:status', $migrationConfig, $yramid)),
        (new Migrate('dbm:migrate', $migrationConfig, $yramid)),
        (new Rollback('dbm:rollback', $migrationConfig, $yramid)),
        (new CreateSeed('seed:create', $migrationConfig, $yramid)),
        (new Run('seed:run', $migrationConfig, $yramid)),
        (new Set('dbm:set-savepoint', $migrationConfig, $yramid)),
        (new Remove('dbm:unset-savepoint', $migrationConfig, $yramid)),
    ]);
    $app->run();
} catch (Exception $exception) {
    echo $exception->getMessage() . PHP_EOL;
}

示例相对于项目根目录 dev/bin/cli.

用法

根据CLI脚本中的定义,现在可以访问命令。

 dbm
  dbm:create           Use to create new migration files
  dbm:migrate          Migrate migration
  dbm:rollback         Rollback migration
  dbm:set-savepoint    Set migration savepoint
  dbm:status           List migration status
  dbm:unset-savepoint  Unset migration savepoint
 seed
  seed:create          Create a seed
  seed:run             Run seed

CreateCommand

用于创建新的迁移脚本。


cli dbm:create <description>
参数描述
description迁移描述。从这生成name和有效的类名。

StatusCommand

输出所有迁移的状态。


cli dbm:status
 -------- ------------ ------------------------ -------------------------- -----------
  Status   Serial       Name                     Timestamp                  Savepoint  
 -------- ------------ ------------------------ -------------------------- -----------
  UP       1638271429   PartOne                  2021-12-03T11:17:45+0100              
  UP       1638271911   PartTwo                  2021-12-03T11:17:45+0100              
  UP       1638347995   SetAllTimestampFormats   2021-12-03T11:21:13+0100              
  UP       1638462559   DefineNewRelation        2021-12-03T11:21:13+0100   Save-rel0
  DOWN     1638462617   YourCurrentMigration     
 -------- ------------ ------------------------ -------------------------- -----------

示例状态输出

MigrateCommand

将迁移执行到指定的target


cli dbm:migrate [options]
选项描述
-t, --target[=TARGET]要迁移到的目标serialsavepoint
-d, --dry-rundry-run模式执行。 (没有实际迁移但DB事务回滚)

RollbackCommand

将迁移回滚到指定的target


cli dbm:rollback [options]
选项描述
-t, --target[=TARGET]要回滚到的目标serialsavepoint
-d, --dry-rundry-run模式执行。 (没有实际迁移回滚但DB事务回滚)

CreateSeedCommand

用于创建种子。


cli  seed:create <description>
参数描述
description种子描述。从这生成name和有效的类名。

RunSeedCommand

用于处理特定的种子。


cli seed:run [options] [--] <name>
参数描述
name要处理的种子的名称。
选项Beschreibung
-d, --dry-rundry-run模式执行。 (没有实际DB提交但DB事务回滚)

SetSavepointCommand

用于定义保存点。


cli dbm:set-savepoint [options]
参数描述
savepoint要设置的savepoint的字符串;
选项描述
-t, --target[=TARGET]Target

RemoveSavepointCommand

用于从迁移中删除保存点。


cli dbm:unset-savepoint [options]
参数描述
savepoint要取消设置的savepointserial的字符串;