在 afterSave Yii 中使用 foreach 将动态值保存到另一个表/模型
Posted
技术标签:
【中文标题】在 afterSave Yii 中使用 foreach 将动态值保存到另一个表/模型【英文标题】:Saving dynamic values to another table/model using foreach in afterSave Yii 【发布时间】:2013-11-03 13:28:22 【问题描述】:这是我的第一篇文章,我真的对下面的代码感到困惑。我正在构建一个游戏网站(我的第一个项目使用 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();
【问题讨论】:
抱歉,$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
顺便说一句,你为什么不验证?
【讨论】:
感谢您的快速回复,我完全按照您的建议更新了我的代码,但仍然无法正常工作(仅插入一行,con_id 值为 1(不正确)),关于您的问题,为什么我'没有验证,当我验证时,尽管插入的值是数组内的整数,并且规则只允许将整数插入到表中,但表中没有插入任何内容。以上是关于在 afterSave Yii 中使用 foreach 将动态值保存到另一个表/模型的主要内容,如果未能解决你的问题,请参考以下文章
将 afterSave 与 Parse Cloud 代码一起使用