我是yii的新手。我使用CFormModel扩展的模型从表单中收集数据,并且在控制器中我想将这些数据复制到CActiveRecord扩展的模型中,以便保存到DB中。有没有一种方法或途径可以将数据从数据收集模型复制到数据保存模型中,而不是通过属性到属性来进行复制,因为这样做太难看了。提前感谢。
CFormModel
CActiveRecord
xienkqul1#
您可以通过以下方式获取所有模型属性:
$data = $model->attributes;
并将它们分配给另一个模型
$anotherModel = new AnotherActiveRecord(); $anotherModel->setAttributes($data); $anotherModel->save();
现在,另一个模型将从$data中提取它所能提取任何内容
$data
ou6hu8tu2#
可以使用以下方法
public function cloneModel($className,$model) { $attributes = $model->attributes; $newObj = new $className; foreach($attributes as $attribute => $val) { $newObj->{$attribute} = $val; } return $newObj; }
在dome组件中定义它,比如说UtilityComponent。然后您可以调用
$modelTemp = $new ModelClass(); $model->someAttr = 'someVal'; $clonedModel = Yii::$app->utilities->cloneModel(ModelClass::class,$modelTemp);
2条答案
按热度按时间xienkqul1#
您可以通过以下方式获取所有模型属性:
并将它们分配给另一个模型
现在,另一个模型将从
$data
中提取它所能提取任何内容ou6hu8tu2#
可以使用以下方法
在dome组件中定义它,比如说UtilityComponent。然后您可以调用