2013-11-03 32 views
1

這是我的第一篇文章,我對以下代碼感到困惑。我正在構建一個遊戲網站(我的第一個項目使用yii),並且我在模型中使用afterSave()將數據插入到另一個表中,因爲關係是多對多關係。我從數據庫獲取數據,然後將其爆炸以獲取數字(所以我可以將其插入到另一個表中)而不是('2','|','3')。問題是foreach插入一行代替(儘管事實上它應該插入多於一行)在我的示例中,插入的con_id值始終爲1,我不明白這個問題,請幫助我。在afterSave中使用foreach將動態值保存到另一個表/模型Yii

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(); 
} 
+0

對不起,$ this-> con_id會持有什麼?您可以添加var_dump並查看結果 –

回答

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 

} 

,並順便說一句你爲什麼沒有驗證?

+0

感謝您的快速回復,我更新了我的代碼,確切地說,您是如何給我建議的,但它仍然不工作(只插入一行,con_id值爲1(不正確)),我沒有驗證,當我確認沒有插入到表中時,儘管事實上插入的值是數組內的整數,並且規則只允許整數插入到表中。 –

+0

我更新了代碼,你應該返回parent :: afterSave() – tinybyte

相關問題