예제 #1
0
 /**
  * Creates a new model.
  * If creation is successful, the browser will be redirected to the 'view' page.
  */
 public function actionCreate()
 {
     $model = new ProfileField();
     $scheme = get_class(Yii::$app->db->schema);
     if ($model->load(Yii::$app->request->post())) {
         $model->loadDefaultValues(true);
         if ($model->validate()) {
             $sql = 'ALTER TABLE ' . Profile::tableName() . ' ADD `' . $model->varname . '` ' . $this->fieldType($model->field_type);
             if ($model->field_type != 'TEXT' && $model->field_type != 'DATE' && $model->field_type != 'BOOL' && $model->field_type != 'BLOB' && $model->field_type != 'BINARY') {
                 $sql .= '(' . $model->field_size . ')';
             }
             $sql .= ' NOT NULL';
             if ($model->field_type != 'TEXT' && $model->field_type != 'BLOB' || $scheme != 'yii\\db\\mysql\\Schema') {
                 if (!empty($model->default)) {
                     $sql .= " DEFAULT '" . $model->default . "'";
                 } else {
                     $sql .= $model->field_type == 'TEXT' || $model->field_type == 'VARCHAR' || $model->field_type == 'BLOB' || $model->field_type == 'BINARY' ? " DEFAULT ''" : ($model->field_type == 'DATE' ? " DEFAULT '0000-00-00'" : " DEFAULT 0");
                 }
             }
             $model->getDb()->createCommand($sql)->execute();
             $model->save();
             $this->redirect(['view', 'id' => $model->id]);
         }
     }
     $this->registerScript();
     return $this->render('create', ['model' => $model]);
 }