rvalin/migration-bundle

该包已被废弃,不再维护。未建议替代包。

Symfony Bundle 用于迁移

v1.0.1 2018-03-17 06:39 UTC

This package is auto-updated.

Last update: 2020-01-26 20:11:36 UTC


README

RValinMigrationBundle 为 symfony (2 -> 4) 添加了迁移支持。
它提供了一个灵活且易于使用的解决方案,可以在项目上运行自定义 SQL 查询、命令或脚本。

安装

  1. 使用 Composer 下载库
composer require rvalin/migration-bundle
  1. 然后将 RValinMigrationBundle 添加到您的应用程序内核
// app/AppKernel.php
public function registerBundles()
{
    return array(
        // ...
        new RValin\MigrationBundle\RValinMigrationBundle(),
        // ...
    );
}
  1. 然后更新您的数据库
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 查询。

只有已运行的迁移才会被撤销。

您可以使用以下选项过滤您要运行的迁移
名称 运行特定迁移
运行特定版本的迁移
最小版本 运行的最小迁移版本
最小日期 运行的最小创建日期的迁移