我是yii的新手。我使用由CFormModel
扩展的模型从表单收集数据,并且在控制器内部我想将这些数据复制到从CActiveRecord
扩展以便保存到DB的模型。有没有一种方法或方法可以将数据从数据收集模型复制到数据保存模型,而不是通过属性来实现属性,因为它很丑陋。提前致谢。
答案 0 :(得分:19)
您可以通过以下方式获取所有模型属性:
$data = $model->attributes;
并将它们分配给另一个模型
$anotherModel = new AnotherActiveRecord();
$anotherModel->setAttributes($data);
现在另一个模型将从$data
答案 1 :(得分:0)
您可以使用以下方法
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);