diff --git a/extensions/gii/generators/model/Generator.php b/extensions/gii/generators/model/Generator.php index 9a9401654c..3af552d327 100644 --- a/extensions/gii/generators/model/Generator.php +++ b/extensions/gii/generators/model/Generator.php @@ -30,6 +30,7 @@ class Generator extends \yii\gii\Generator public $baseClass = 'yii\db\ActiveRecord'; public $generateRelations = true; public $generateLabelsFromComments = false; + public $useTablePrefix=false; /** * @inheritdoc @@ -65,6 +66,7 @@ class Generator extends \yii\gii\Generator [['baseClass'], 'validateClass', 'params' => ['extends' => ActiveRecord::className()]], [['generateRelations', 'generateLabelsFromComments'], 'boolean'], [['enableI18N'], 'boolean'], + [['useTablePrefix'], 'boolean'], [['messageCategory'], 'validateMessageCategory', 'skipOnEmpty' => false], ]); } @@ -533,6 +535,26 @@ class Generator extends \yii\gii\Generator return $this->_tableNames = $tableNames; } + /** + * Generates a the tablename with tableprefix usage . + * @param string $tableName the table name (which may contain schema prefix) + * @return string the generated table name if useTablePrefix == true return with {{%}} depending of the position of the prefix + */ + public function generateTablename($tableName) + { + if (!$this->useTablePrefix) { + return $tableName; + } else { + $db = $this->getDbConnection(); + if (preg_match("/^{$db->tablePrefix}(.*?)$/", $tableName, $matches)) { + $tableName = '{{%'.$matches[1].'}}'; + } elseif (preg_match("/^(.*?){$db->tablePrefix}$/", $tableName, $matches)) { + $tableName = '{{'.$matches[1].'%}}'; + } + return $tableName; + } + } + /** * Generates a class name from the specified table name. * @param string $tableName the table name (which may contain schema prefix) diff --git a/extensions/gii/generators/model/default/model.php b/extensions/gii/generators/model/default/model.php index 2dfcd82fb7..44b7c61c96 100644 --- a/extensions/gii/generators/model/default/model.php +++ b/extensions/gii/generators/model/default/model.php @@ -39,7 +39,7 @@ class extends baseClass, '\\') . */ public static function tableName() { - return ''; + return 'generateTablename($tableName) ?>'; } db !== 'db'): ?> diff --git a/extensions/gii/generators/model/form.php b/extensions/gii/generators/model/form.php index 8f53b01eb2..f4147a1294 100644 --- a/extensions/gii/generators/model/form.php +++ b/extensions/gii/generators/model/form.php @@ -10,6 +10,7 @@ echo $form->field($generator, 'modelClass'); echo $form->field($generator, 'ns'); echo $form->field($generator, 'baseClass'); echo $form->field($generator, 'db'); +echo $form->field($generator, 'useTablePrefix')->checkbox(); echo $form->field($generator, 'generateRelations')->checkbox(); echo $form->field($generator, 'generateLabelsFromComments')->checkbox(); echo $form->field($generator, 'enableI18N')->checkbox();