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

时间:2013-11-03 13:28:23

标签: php yii foreach after-save

这是我的第一篇文章,我真的对以下代码感到困惑。我正在建立一个游戏网站(我使用yii的第一个项目),我在模型中使用afterSave()将数据插入另一个表,因为关系是多对多。我从数据库中获取数据然后将其展开以仅获取数字(因此我可以将其插入另一个表中)而不是('2','|','3')。问题是foreach在我的例子中插入了一行(尽管它应该插入多行),插入的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();
}

1 个答案:

答案 0 :(得分:1)

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

你应该改变你的代码:

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

}

和btw你为什么不验证?