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

chhkpiq4  于 2022-11-09  发布在  其他
关注(0)|答案(2)|浏览(201)

我是yii的新手。我使用CFormModel扩展的模型从表单中收集数据,并且在控制器中我想将这些数据复制到CActiveRecord扩展的模型中,以便保存到DB中。有没有一种方法或途径可以将数据从数据收集模型复制到数据保存模型中,而不是通过属性到属性来进行复制,因为这样做太难看了。提前感谢。

xienkqul

xienkqul1#

您可以通过以下方式获取所有模型属性:

$data = $model->attributes;

并将它们分配给另一个模型

$anotherModel = new AnotherActiveRecord();
$anotherModel->setAttributes($data);
$anotherModel->save();

现在,另一个模型将从$data中提取它所能提取任何内容

ou6hu8tu

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

相关问题