在 afterSave Yii 中使用 foreach 将动态值保存到另一个表/模型


Saving dynamic values to another table/model using foreach in afterSave Yii

这是我的第一篇文章,我对下面的代码感到非常困惑。我正在构建一个游戏网站(我的第一个使用 yii 的项目),我在模型中使用 afterSave() 将数据插入到另一个表中,因为关系是多对多。我正在从数据库中获取数据,然后将其分解以仅获取数字(因此我可以将其插入另一个表中)而不是("2","|","3")。问题是在我的示例中插入一行而不是两行(尽管它应该插入多行),并且插入的con_id值始终为 1,我不明白这里的问题,请帮助我。

protected function afterSave()                    
{
    $model1 = new GameConsole();    
    $con[] = explode('|', $this->con_id);       
    foreach($con as $row) {            
        $model1->game_id = $this->game_id;
        $model1->con_id = $row;
        $model1->save(false);
    }
    parent::afterSave();
}

您一遍又一遍地保存一个模型

您应该像这样更改代码:

protected function afterSave()                    
{
  $con[]= explode('|', $this->con_id);       
  foreach($con as $row){            
      $model1=new GameConsole; // this line creates new GameConsole
      $model1->game_id= $this->game_id;
      $model1->con_id=$row;
      $model1->save(false);
 }
 return parent::afterSave(); // update : return it
}

顺便说一句,你为什么不验证?