如何像新重新编码一样多次保存同一模型?

时间:2013-06-05 18:35:20

标签: yii

我需要在更改id之后多次保存相同的模型($ modelcrite)才是代码

   protected function saveed($data1,$studentid,$modelcrite,$model)
    {
           $index = 0;
           foreach ($data1 as $key => $value) {
                $studentid[$index]=(string)$key;
                $modelcrite->setAttribute('st_id',$key);

                if ($modelcrite->validate()){
                        $modelcrite->setScenario('insert');
                        $modelcrite->save();

                    }               
                else {
                    $this->Delete($model->ass_id);
                    return FALSE;
                }
                $index=$index+1;
           }
           return TRUE;
    }

但问题是当第二次保存$ modelcrite值时它正在更新数据库。我需要将其保存为新的一个
请任何人告诉我该怎么做。谢谢。

1 个答案:

答案 0 :(得分:1)

我相信您的混淆来自于ActiveRecord模型不代表表格,而是代表表格中的一行。因此,在传入新模型(行)时,稍微改变术语$ modelcrite ActiveRecord会识别出这是一个新模型(行),并且save执行插入。此时,活动记录意识到表中存在模型(行),并且针对该模型(行)的任何其他保存将生成更新。

考虑到背景,你需要做的是在foreach循环中为插入创建一个新模型,并将新模型的属性设置为$ modelcrite,然后设置student_id,然后验证并保存。

这样的事情:

foreach ($data1 as $key => $value) {
   $newModel = new CriteModel();
   $newModel->attributes = $modelcrite->attributes;
   $studentid[$index]=(string)$key;
   $newModel->setAttribute('st_id',$key);

   if ($newModel->validate()){
      $newModel->save();