예제 #1
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;
 }
예제 #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) {
     }
     $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;
 }