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