Автор: Alexey Bobkov, Samuel Georges
Наследование: extends RainLab\Builder\Classes\BaseModel
 public function onDatabaseTableMigrationApply()
 {
     $pluginCode = new PluginCode(Request::input('plugin_code'));
     $model = new MigrationModel();
     $model->setPluginCodeObj($pluginCode);
     $model->fill($_POST);
     $operation = Input::get('operation');
     $table = Input::get('table');
     $model->scriptFileName = 'builder_table_' . $operation . '_' . $table;
     $model->makeScriptFileNameUnique();
     $codeGenerator = new TableMigrationCodeGenerator();
     $model->code = $codeGenerator->wrapMigrationCode($model->scriptFileName, $model->code, $pluginCode);
     try {
         $model->save();
     } catch (Exception $ex) {
         throw new ApplicationException($ex->getMessage());
     }
     $result = $this->controller->widget->databaseTabelList->updateList();
     $result = array_merge($result, $this->controller->widget->versionList->refreshActivePlugin());
     $result['builderResponseData'] = ['builderObjectName' => $table, 'tabId' => $this->getTabId($table), 'tabTitle' => $table, 'tableName' => $table, 'operation' => $operation, 'pluginCode' => $pluginCode->toCode()];
     return $result;
 }
 public function generateDropMigration()
 {
     $existingSchema = $this->tableInfo;
     $codeGenerator = new TableMigrationCodeGenerator();
     $migrationCode = $codeGenerator->dropTable($existingSchema);
     return $this->createMigrationObject($migrationCode, sprintf('Drop table %s', $this->name));
 }