示例#1
0
 public function generate()
 {
     $this->tableName = preg_replace('/({{%)(\\w+)(}})?/', "\$2", $this->tableName);
     $tableName = $this->tableName;
     if ($this->useTablePrefix) {
         $tableName = "{{%{$tableName}}}";
     }
     $this->getTableFields();
     if ($this->autoCreateTable && isset($_POST['generate']) || $this->forceTableCreate) {
         $this->dropIfExists = $this->forceTableCreate ? true : $this->dropIfExists;
         $tableGenerator = new TableBuilder(['tableName' => $tableName, 'fields' => $this->fields, 'useTablePrefix' => $this->useTablePrefix, 'dropOriginTable' => $this->dropIfExists]);
         $tableGenerator->runQuery(true);
     }
     $files = [];
     if ($this->migrationCreate) {
         $this->migrationName = Yii::$app->session->get($this->tableName) ?: false;
         $mCreate = new TableBuilderTemplateMigration(['tableName' => $tableName, 'fields' => $this->fields, 'useTablePrefix' => $this->useTablePrefix]);
         if (!$this->migrationName) {
             Yii::$app->session->set($this->tableName, $mCreate->migrationName);
         }
         $this->migrationName = $this->migrationName ?: Yii::$app->session->get($this->tableName);
         $mCreate->migrationName = $this->migrationName ?: $mCreate->migrationName;
         $files[] = new CodeFile(Yii::getAlias($this->migrationPath) . '/' . $mCreate->migrationName . '.php', $mCreate->runQuery());
     }
     return $files;
 }
示例#2
0
 public function generate()
 {
     try {
         if ($this->translateModel->createTable) {
             $tb = new TableBuilder(['tableName' => $this->translateModel->createTable ? $this->translateModel->tableBuilder->tableName : $this->translateModel->tableName, 'fields' => $this->translateModel->tableBuilder->fields, 'db' => $this->baseModel->db]);
             $tb->dropTable();
         }
         if ($this->baseModel->createTable) {
             $tb = new TableBuilder(['tableName' => $this->baseModel->createTable ? $this->baseModel->tableBuilder->tableName : $this->baseModel->tableName, 'fields' => $this->baseModel->tableBuilder->fields, 'db' => $this->translateModel->db]);
             $tb->dropTable();
         }
     } catch (IntegrityException $exp) {
     } catch (Exception $exp) {
     }
     if (!isset($this->baseModel->behaviorModels['trans'])) {
         $this->baseModel->buildBehaviors($this->baseModel->customBehaviors);
     }
     if (isset($this->baseModel->behaviorModels['trans']) && ($trans = $this->findTranslatableBehavior())) {
         /** @var Behaviors $trans */
         $trans->checked = true;
         if (!$trans->dynamicLangClass) {
             $trans->attributesLang = [];
             foreach ($this->translateModel->tableBuilder->fields as $field) {
                 /** @var Field $field */
                 if ($field->name == $this->baseModel->tableBuilder->tableName . '_id' || !$this->findTranslateField($field->name) || $field->name == $this->translateModel->tableBuilder->primaryKeyName) {
                     continue;
                 }
                 $trans->attributesLang[] = $field->name;
                 $trans->langClassName = $this->translateModel->ns . "\\" . $this->translateModel->modelClass;
             }
         } else {
             $trans->attributesLang = is_array($trans->attributesLang) ? $trans->attributesLang : explode(',', $trans->attributesLang);
         }
         foreach ($trans->attributesLang as &$item) {
             $item = trim($item);
         }
     }
     $files = ArrayHelper::merge($this->baseModel->generate(), $this->translateModel->generate());
     if (isset($trans)) {
         $trans->attributesLang = implode(",", $trans->attributesLang);
     }
     return $files;
 }
示例#3
0
 public function generate()
 {
     try {
         if ($this->translateModel->createTable) {
             $tb = new TableBuilder(['tableName' => $this->translateModel->createTable ? $this->translateModel->tableBuilder->tableName : $this->translateModel->tableName, 'fields' => $this->translateModel->tableBuilder->fields, 'db' => $this->baseModel->db]);
             $tb->dropTable();
         }
         if ($this->baseModel->createTable) {
             $tb = new TableBuilder(['tableName' => $this->baseModel->createTable ? $this->baseModel->tableBuilder->tableName : $this->baseModel->tableName, 'fields' => $this->baseModel->tableBuilder->fields, 'db' => $this->translateModel->db]);
             $tb->dropTable();
         }
     } catch (IntegrityException $exp) {
     } catch (Exception $exp) {
     }
     $translationsAttribute = [];
     foreach ($this->translateModel->tableBuilder->fields as $_next) {
         /** @var $_next Field */
         if (!$this->findTranslateField($_next->name)) {
             $translationsAttribute[] = $_next->name;
         }
     }
     $files = ArrayHelper::merge($this->baseModel->generate(), $this->translateModel->generate());
     return $files;
 }