我的数据库中有两个表,用户和个人资料。Profile 有 user_id 作为主键。每个用户只能拥有一个配置文件。当我上传图像文件时,它的名称与该 user_id 一起存储在配置文件表中。当 profile 表中还有其他字段需要更新时,我首先检查是否已经存在具有该 user_id 的记录。在我的个人资料模型中,我写了
public function checkForSaveOrUpdate()
{
return self::model()->findByAttributes(array('user_id'=>Yii::app()->user->id));
}
我的控制器文件看起来像这样
public function actionCreateInfo()
{
$profile = new Profile;
$profile->user_id = Yii::app()->user->id;
if(isset($_POST['Profile']))
{
if($profile->checkForSaveOrUpdate() === null)
{
$profile->attributes = $_POST['Profile'];
if($profile->save())
Yii::app()->user->setFlash('success','Profile has been saved successfully');
}
elseif($profile = $profile->checkForSaveOrUpdate())
{
$profile->attributes = $_POST['Profile'];
if($profile->update())
Yii::app()->user->setFlash('success','Profile has been updated successfully');
}
$this->redirect(array('index'));
}
$this->render('createInfo',array('profile'=>$profile));
}
我的问题是当我已经在数据库中,在配置文件中有一条记录,并且我提交了一个新表单时,旧数据全部被删除,只有当前提交的值被更新,而它应该保留旧值并且只更新新值。