public function save($returnJson = true) { $primaryKeys = $this->model->primaryKey(); $primaryKey = $primaryKeys[0]; $modelData = \Yii::$app->getRequest()->post($this->model->shortClassName()); if (!empty($modelData[$primaryKey])) { $id = $modelData[$primaryKey]; $this->model = $this->model->findOne($id); if (!$this->model) { return $returnJson ? $this->renderJson() : false; } } $this->model->setAttributes($modelData); foreach ($this->relations as $name => $value) { if (is_string($value)) { $value = \Yii::$app->getRequest()->post($value); } else { if ($value instanceof \Closure) { $value = call_user_func($value); } } $indexKey = null; if (isset($value['indexKey'])) { $indexKey = $value['indexKey']; unset($value['indexKey']); } $this->model->setRelation($name, $value, $indexKey); } $result = $this->model->save(); return $returnJson ? $this->renderJson() : $result; }