RainLab\Builder\Classes\MigrationModel::makeScriptFileNameUnique PHP Method

makeScriptFileNameUnique() public method

    public function makeScriptFileNameUnique()
    {
        $updatesPath = $this->getPluginUpdatesPath();
        $baseFileName = $fileName = $this->scriptFileName;
        $counter = 2;
        while (File::isFile($updatesPath . '/' . $fileName . '.php')) {
            $fileName = $baseFileName . '_' . $counter;
            $counter++;
        }
        return $this->scriptFileName = $fileName;
    }

Usage Example

 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;
 }