From e562f8e43a05adcc9f73d5de4f185a5cd3649df5 Mon Sep 17 00:00:00 2001 From: Thiago Talma Date: Tue, 13 Jan 2015 15:03:15 -0200 Subject: [PATCH] Enh #6857: Added `yii\gii\Module::$ignoreTables` that allows you to ignore tables during model generation using `*` --- extensions/gii/CHANGELOG.md | 2 +- extensions/gii/Module.php | 5 +++++ extensions/gii/generators/model/Generator.php | 5 +++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/extensions/gii/CHANGELOG.md b/extensions/gii/CHANGELOG.md index 71585265d1..8d20f4ae04 100644 --- a/extensions/gii/CHANGELOG.md +++ b/extensions/gii/CHANGELOG.md @@ -4,7 +4,7 @@ Yii Framework 2 gii extension Change Log 2.0.3 under development ----------------------- -- no changes in this release. +- Enh #6857: Added `yii\gii\Module::$ignoreTables` that allows you to ignore tables during model generation using `*` (thiagotalma) 2.0.2 January 11, 2015 diff --git a/extensions/gii/Module.php b/extensions/gii/Module.php index 359a8d4a3d..8e30572cbd 100644 --- a/extensions/gii/Module.php +++ b/extensions/gii/Module.php @@ -77,6 +77,11 @@ class Module extends \yii\base\Module implements BootstrapInterface * Defaults to 0777, meaning the directory can be read, written and executed by all users. */ public $newDirMode = 0777; + /** + * @var array the list of table names to be ignored. + * @since 2.0.3 + */ + public $ignoreTables = []; /** diff --git a/extensions/gii/generators/model/Generator.php b/extensions/gii/generators/model/Generator.php index 93cf0c8abc..0efea5273b 100644 --- a/extensions/gii/generators/model/Generator.php +++ b/extensions/gii/generators/model/Generator.php @@ -525,6 +525,7 @@ class Generator extends \yii\gii\Generator } $tableNames = []; if (strpos($this->tableName, '*') !== false) { + $module = Yii::$app->controller->module; if (($pos = strrpos($this->tableName, '.')) !== false) { $schema = substr($this->tableName, 0, $pos); $pattern = '/^' . str_replace('*', '\w+', substr($this->tableName, $pos + 1)) . '$/'; @@ -534,6 +535,10 @@ class Generator extends \yii\gii\Generator } foreach ($db->schema->getTableNames($schema) as $table) { + if (in_array($table, $module->ignoreTables)) { + continue; + } + if (preg_match($pattern, $table)) { $tableNames[] = $schema === '' ? $table : ($schema . '.' . $table); }