/** * Creates a new Table model. * If creation is successful, the browser will be redirected to the 'view' page. * @return mixed */ public function actionCreate() { $modelTable = new Table(); $modelsField = [new Field()]; NodeLogger::sendLog("Init"); if ($modelTable->load(\Yii::$app->request->post())) { NodeLogger::sendLog("Loaded Post Request"); $modelTable->slug_name = PhysicalTableGenerator::getSafeTableName($modelTable->name); $modelsField = Model::createMultiple(Field::classname()); Model::loadMultiple($modelsField, \Yii::$app->request->post()); NodeLogger::sendLog("Loaded Data"); for ($i = 0; $i < count($modelsField); $i++) { $modelsField[$i]->slug_name = PhysicalTableGenerator::getSafeFieldName($modelTable->slug_name, $modelsField[$i]->name); //Util::slugifyToDbSafe($modelsField[$i]->name)."_".\Yii::$app->security->generateRandomString(6); $modelsField[$i]->df_table_id = 1; } NodeLogger::sendLog("Set Relation ID"); // validate all models $valid = $modelTable->validate(); $valid = Model::validateMultiple($modelsField) && $valid; if ($valid) { $transaction = \Yii::$app->db->beginTransaction(); try { if ($flag = $modelTable->save(false)) { foreach ($modelsField as $modelField) { $modelField->df_table_id = $modelTable->id; if (!($flag = $modelField->save(false))) { $transaction->rollBack(); break; } } } if ($flag) { $transaction->commit(); PhysicalTableGenerator::createTable($modelTable); return $this->redirect(['view', 'id' => $modelTable->id]); } } catch (Exception $e) { $transaction->rollBack(); } } } return $this->render('create', ['modelTable' => $modelTable, 'modelsField' => empty($modelsField) ? [new Field()] : $modelsField]); }