pyramid / symfony-commands
pyramid/symfony-commands是一个使用yramid/lib数据库迁移的symfony控制台库
2.0.0
2022-02-01 16:19 UTC
Requires
- php: >=8.0
- ext-pdo: *
- symfony/console: ^5.4|^6.0
- yramid/lib: ^2.0
Requires (Dev)
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: ^3.6
- vimeo/psalm: ^4.13
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] | 要迁移到的目标serial 或savepoint ; |
-d, --dry-run | 以dry-run 模式执行。 (没有实际迁移但DB事务回滚) |
RollbackCommand
将迁移回滚到指定的target
。
cli dbm:rollback [options]
选项 | 描述 |
---|---|
-t, --target[=TARGET] | 要回滚到的目标serial 或savepoint ; |
-d, --dry-run | 以dry-run 模式执行。 (没有实际迁移回滚但DB事务回滚) |
CreateSeedCommand
用于创建种子。
cli seed:create <description>
参数 | 描述 |
---|---|
description | 种子描述。从这生成name 和有效的类名。 |
RunSeedCommand
用于处理特定的种子。
cli seed:run [options] [--] <name>
参数 | 描述 |
---|---|
name | 要处理的种子的名称。 |
选项 | Beschreibung |
---|---|
-d, --dry-run | 以dry-run 模式执行。 (没有实际DB提交但DB事务回滚) |
SetSavepointCommand
用于定义保存点。
cli dbm:set-savepoint [options]
参数 | 描述 |
---|---|
savepoint | 要设置的savepoint 的字符串; |
选项 | 描述 |
---|---|
-t, --target[=TARGET] | Target |
RemoveSavepointCommand
用于从迁移中删除保存点。
cli dbm:unset-savepoint [options]
参数 | 描述 |
---|---|
savepoint | 要取消设置的savepoint 或serial 的字符串; |