0

我需要在更改 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 值时,它正在更新数据库。我需要将它保存为新的,
请任何人告诉我该怎么做。谢谢。

4

1 回答 1

1

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

考虑到这一背景,您需要在 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();
于 2013-06-05T21:21:27.247 回答