diff --git a/framework/CHANGELOG.md b/framework/CHANGELOG.md index 93502f9f78..d068280d46 100644 --- a/framework/CHANGELOG.md +++ b/framework/CHANGELOG.md @@ -63,6 +63,7 @@ Yii Framework 2 Change Log - Enh #3562: Adding rotateByCopy to yii\log\FileTarget (pawzar) - Enh #3574: Add integrity check support for SQLite (zeeke) - Enh #3597: Nested array support for HTML5 custom "data-*" attributes (armab) +- Enh #3607: Added support for limit in migrations actions: history, new, redo (Ragazzo) - Enh: Added support for using sub-queries when building a DB query with `IN` condition (qiangxue) - Enh: Supported adding a new response formatter without the need to reconfigure existing formatters (qiangxue) - Enh: Added `yii\web\UrlManager::addRules()` to simplify adding new URL rules (qiangxue) diff --git a/framework/console/controllers/MigrateController.php b/framework/console/controllers/MigrateController.php index 74021de6cf..b2a3d74226 100644 --- a/framework/console/controllers/MigrateController.php +++ b/framework/console/controllers/MigrateController.php @@ -214,11 +214,13 @@ class MigrateController extends Controller } $migrations = $this->getMigrationHistory($limit); + if (empty($migrations)) { echo "No migration has been done before.\n"; return self::EXIT_CODE_NORMAL; } + $migrations = array_keys($migrations); $n = count($migrations); @@ -249,6 +251,7 @@ class MigrateController extends Controller * ~~~ * yii migrate/redo # redo the last applied migration * yii migrate/redo 3 # redo the last 3 applied migrations + * yii migrate/redo all # redo all migrations * ~~~ * * @param integer $limit the number of migrations to be redone. Defaults to 1, @@ -259,17 +262,23 @@ class MigrateController extends Controller */ public function actionRedo($limit = 1) { - $limit = (int) $limit; - if ($limit < 1) { - throw new Exception("The step argument must be greater than 0."); + 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)) { echo "No migration has been done before.\n"; return self::EXIT_CODE_NORMAL; } + $migrations = array_keys($migrations); $n = count($migrations); @@ -410,7 +419,7 @@ class MigrateController extends Controller * ~~~ * yii migrate/history # showing the last 10 migrations * yii migrate/history 5 # showing the last 5 migrations - * yii migrate/history 0 # showing the whole history + * yii migrate/history all # showing the whole history * ~~~ * * @param integer $limit the maximum number of migrations to be displayed. @@ -418,8 +427,17 @@ class MigrateController extends Controller */ public function actionHistory($limit = 10) { - $limit = (int) $limit; + 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)) { echo "No migration has been done before.\n"; } else { @@ -444,7 +462,7 @@ class MigrateController extends Controller * ~~~ * yii migrate/new # showing the first 10 new migrations * yii migrate/new 5 # showing the first 5 new migrations - * yii migrate/new 0 # showing all new migrations + * yii migrate/new all # showing all new migrations * ~~~ * * @param integer $limit the maximum number of new migrations to be displayed. @@ -452,13 +470,22 @@ class MigrateController extends Controller */ public function actionNew($limit = 10) { - $limit = (int) $limit; + 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->getNewMigrations(); + if (empty($migrations)) { echo "No new migrations found. Your system is up-to-date.\n"; } else { $n = count($migrations); - if ($limit > 0 && $n > $limit) { + if ($limit && $n > $limit) { $migrations = array_slice($migrations, 0, $limit); echo "Showing $limit out of $n new " . ($n === 1 ? 'migration' : 'migrations') . ":\n"; } else {