我使用的是Yii框架,但这可能与我的PHP代码有关。
我的控制器中有3个方法,1个用于创建,1个用于更新,1个用于保存。 创建和更新渲染相同的表单。
保存记录的一切正常。但是当我更新记录时,它会创建一条新记录。 在我的更新方法中,我加载现有记录并获得正确的值,但是当我保存它时将其保存在新记录中。我尝试使用$ model-> update()而不是$ model-> save(),但我收到的错误是我无法更新新记录。
提前感谢任何见解
方法创建
$model = new Comment;
$this->renderPartial('_formComment',array(
'model'=>$model,
'post_id'=>$post_id,)
);
方法更新
$model=$this->loadModel($comment_id);
$this->renderPartial('_formComment',array(
'model'=>$model,
'post_id'=>$model->post_id,
'comment_id'=>$model->id,)
);
保存方法
$comment=new Comment;
if(isset($_POST['Comment']))
{
$model->attributes=$_POST['Comment'];
if($model->save()) {
echo ('save ok');
}
}
我的更新方法调用的loadmodel函数
if($this->_model===null)
{
$this->_model=Comment::model()->findbyPk($comment_id);
if($this->_model===null)
throw new CHttpException(404,'The requested page does not exist.');
}
return $this->_model;
答案 0 :(得分:2)
你有
$comment=new Comment;
在save方法中,它始终创建一个新模型。但是您需要加载现有模型,设置属性并保存它。在保存方法中传递$ model。