使用模型对象更新yii中的数据

时间:2014-11-02 04:24:08

标签: yii

我是YII的新手 尝试使用以下代码更新用户的价值

public function actionProfile(){

    $model = new Users;

    if(isset($_POST['update'])){            

            $model->findByPk(Yii::app()->session['user_id']);
            $model->user_name = $_POST['Users']['user_name'];
            $model->update();           
            $this->refresh();

            //echo '<pre>';
            //print_r($_POST);die;
        }
}

当我在下面使用它时,我无法得到上面代码的问题,它也是这样做的。请帮忙。 现在我的问题是为什么我无法使用模型的$model对象更新内容。在上面的代码中。

if(isset($_POST['update'])){

        $user = Users::model()->findByPk(Yii::app()->session['user_id']);

        $user->user_name = $_POST['Users']['user_name'];
        $user->update();

        $this->refresh();

        //echo '<pre>';
        //print_r($_POST);die;
    }

2 个答案:

答案 0 :(得分:0)

据我所知,当您需要更新模型数据时,您只需加载现有模型,无需创建新模型。这就是为什么第二个模型适合您。

Users::model()->findByPk(Yii::app()->session['user_id']);// loading existing model

$model = new Users; //creating a new model instance

答案 1 :(得分:0)

因为您没有将user_id分配给$model进行更新。尝试类似下面的内容。

$model = $model->findByPk(Yii::app()->session['user_id']); //This line
$model->user_name = $_POST['Users']['user_name'];
$model->update();

由于您未指定user_id(pk),因此将其视为新记录。结果update被中断。我还建议你添加像这样的错误报告

try{
     $model->update();
}catch (Exception $ex){
     die($ex->getMessage());
}