yii\console\controllers\BaseMigrateController::actionDown PHP Method

actionDown() public method

For example, yii migrate/down # revert the last migration yii migrate/down 3 # revert the last 3 migrations yii migrate/down all # revert all migrations
public actionDown ( integer $limit = 1 ) : integer
$limit integer the number of migrations to be reverted. Defaults to 1, meaning the last applied migration will be reverted.
return integer the status of the action execution. 0 means normal, other values mean abnormal.
    public function actionDown($limit = 1)
    {
        if ($limit === 'all') {
            $limit = null;
        } else {
            $limit = (int) $limit;
            if ($limit < 1) {
                throw new Exception('The step argument must be greater than 0.');
            }
        }
        $migrations = $this->getMigrationHistory($limit);
        if (empty($migrations)) {
            $this->stdout("No migration has been done before.\n", Console::FG_YELLOW);
            return self::EXIT_CODE_NORMAL;
        }
        $migrations = array_keys($migrations);
        $n = count($migrations);
        $this->stdout("Total {$n} " . ($n === 1 ? 'migration' : 'migrations') . " to be reverted:\n", Console::FG_YELLOW);
        foreach ($migrations as $migration) {
            $this->stdout("\t{$migration}\n");
        }
        $this->stdout("\n");
        $reverted = 0;
        if ($this->confirm('Revert the above ' . ($n === 1 ? 'migration' : 'migrations') . '?')) {
            foreach ($migrations as $migration) {
                if (!$this->migrateDown($migration)) {
                    $this->stdout("\n{$reverted} from {$n} " . ($reverted === 1 ? 'migration was' : 'migrations were') . " reverted.\n", Console::FG_RED);
                    $this->stdout("\nMigration failed. The rest of the migrations are canceled.\n", Console::FG_RED);
                    return self::EXIT_CODE_ERROR;
                }
                $reverted++;
            }
            $this->stdout("\n{$n} " . ($n === 1 ? 'migration was' : 'migrations were') . " reverted.\n", Console::FG_GREEN);
            $this->stdout("\nMigrated down successfully.\n", Console::FG_GREEN);
        }
    }