/** * Migration Up * @return bool * @throws \yii\db\Exception */ public function safeUp() { foreach ($this->_rows as $row) { $model = new Setting(); $model->setAttributes(['section' => $row['section'], 'key' => $row['key']]); $model->name = isset($row['name']) ? $row['name'] : $row['key']; $model->hint = isset($row['hint']) ? $row['hint'] : null; $model->value = isset($row['value']) ? (string) $row['value'] : ''; $model->position = isset($row['position']) ? $row['position'] : null; $model->type_key = isset($row['type_key']) ? $row['type_key'] : $model::TYPE_TEXT; $model->variants = isset($row['variants']) ? $row['variants'] : ['safe']; $model->rules = isset($row['rules']) ? $row['rules'] : ['safe']; if ($model->validate()) { $tableName = $model::tableName(); $query = (new Query())->select('*')->from($tableName)->where(['section' => $model->section, 'position' => $model->position]); if ($query->count()) { $command = $this->db->createCommand()->update($tableName, ['position' => new Expression('position+1')], 'position >= :position AND section = :section', ['position' => $model->position, 'section' => $model->section]); if (!$command->execute()) { echo "Saving error\n"; return false; } } if (!$model->save()) { $error = ['Save Error!!']; $error['attributes'] = $model->getAttributes(); $error['errors'] = $model->errors; print_r($error); return false; } } } return true; }