public function setAttributes($bunchOfAttributes) { parent::setAttributes($bunchOfAttributes); $relationClass = $this->info[WFormRelation::RELATION_CLASS]; $relationPk = $relationClass::model()->getMetaData()->tableSchema->primaryKey; $modelsDictionary = array(); foreach ($this->getRelatedModels() as $relationModel) { if ($relationModel->primaryKey) { $modelsDictionary[$relationModel->primaryKey] = $relationModel; } } $relationModels = array(); foreach ($bunchOfAttributes as $key => $attributes) { if (isset($attributes[$relationPk])) { if (isset($modelsDictionary[$attributes[$relationPk]])) { $relationModel = $modelsDictionary[$attributes[$relationPk]]; } else { $relationModel = $relationClass::model()->findByPk($attributes[$relationPk]) ?: new $relationClass(); } } else { $relationModel = new $relationClass(); } $relationModel->attributes = $attributes; $relationModels[$key] = $relationModel; } $this->model->{$this->name} = $relationModels; }
public function setAttributes($attributes) { parent::setAttributes($attributes); if (!is_null($attributes)) { $relationModel = $this->getRelatedModel(); $relationModel->attributes = $attributes; } else { $this->model->{$this->name} = null; } }