rvalin / migration-bundle
Symfony Bundle 用于迁移
Requires
- php: >=5.3.9
- symfony/symfony: >=2.7
This package is auto-updated.
Last update: 2020-01-26 20:11:36 UTC
README
RValinMigrationBundle 为 symfony (2 -> 4) 添加了迁移支持。
它提供了一个灵活且易于使用的解决方案,可以在项目上运行自定义 SQL 查询、命令或脚本。
安装
- 使用 Composer 下载库
composer require rvalin/migration-bundle
- 然后将 RValinMigrationBundle 添加到您的应用程序内核
// app/AppKernel.php public function registerBundles() { return array( // ... new RValin\MigrationBundle\RValinMigrationBundle(), // ... ); }
- 然后更新您的数据库
php bin/console do:sc:up -f
使用方法
生成迁移类
要创建迁移类,请使用以下命令
php bin/console migration:script:generate --bundle=FooBundle
您可以使用“名称”选项为迁移设置自定义名称。
使用此命令创建的迁移将是一个 RValin\MigrationBundle\Tools\MigrationInterface 的实例。
创建迁移
默认情况下,迁移继承自 RValin\MigrationBundle\Tools\DefaultMigration。
此类提供了一种简单的方法来运行 SQL 查询和命令。
您的代码必须在迁移类中的“execute”函数中。
此函数应返回 true 或 false,以表示迁移是否成功。
SQL 查询
您可以使用 executeSql 函数执行 SQL 查询。
function execute() {
$query = 'UPDATE user SET enabled = false WHERE id = ?';
$args = [1];
return $this->executeSql($query, $args);
}
命令
您可以使用 executeCommand 运行命令。
有关更多详细信息,请参阅 Symfony 文档。
function execute() {
$commandArgs = array(
'command' => 'swiftmailer:spool:send',
// (optional) define the value of command arguments
'fooArgument' => 'barValue',
// (optional) pass options to the command
'--message-limit' => $messages,
);
$this->executeCommand($commandArgs);
}
运行迁移
要运行您的迁移,请使用
php bin/console migration:script:run --execute
如果不使用“execute”选项,则不会执行命令和 SQL 查询。
一旦迁移成功运行,它将不再执行。要从表中删除条目以再次运行迁移或撤销它,请从 rvalin_migration 表中删除条目。
您可以使用以下选项过滤您要运行的迁移
名称 运行特定迁移
包 运行特定版本的迁移
最大版本 运行的最大迁移版本
最大日期 运行的最大创建日期的迁移
撤销迁移
要撤销迁移,请使用
php bin/console migration:script:reverse --execute
如果不使用“execute”选项,则不会执行命令和 SQL 查询。
只有已运行的迁移才会被撤销。
您可以使用以下选项过滤您要运行的迁移
名称 运行特定迁移
包 运行特定版本的迁移
最小版本 运行的最小迁移版本
最小日期 运行的最小创建日期的迁移