models[$key] = $model; } public function setModels(array $models) { foreach ($models as $key => $model) { $this->setModel($key, $model); } } public function getModel($key) { return ArrayHelper::getValue($this->models, $key, false); } public function getModels() { return $this->models; } public function load($data, $formName = '') { foreach ($this->models as $k => &$model) { $success = $model->load($data); if (!$success) { return false; } } return true; } public function validate($attributeNames = null, $clearErrors = true) { $this->trigger(Model::EVENT_BEFORE_VALIDATE); $success = true; foreach ($this->models as $key => $model) { if (!$model->validate()) { $success = false; $this->addErrors([$key => $model->getErrors()]); } } $this->trigger(Model::EVENT_AFTER_VALIDATE); return $success; } public function save($runValidation = true) { if ($runValidation && !$this->validate()) { return false; } $success = true; $transaction = $this->getDb()->beginTransaction(); foreach ($this->models as $model) { if (!$success) { $transaction->rollBack(); return false; } $success = $model->save(false); } $transaction->commit(); return $success; } public function getDb() { return \Yii::$app->get($this->db); } }