Yii将数据从一个模型复制到另一个模型

时间:2015-06-21 06:14:27

标签: yii

我是yii的新手。我使用由CFormModel扩展的模型从表单收集数据,并且在控制器内部我想将这些数据复制到从CActiveRecord扩展以便保存到DB的模型。有没有一种方法或方法可以将数据从数据收集模型复制到数据保存模型,而不是通过属性来实现属性,因为它很丑陋。提前致谢。

2 个答案:

答案 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);