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