Php Yii设置模型属性并保存

Php Yii设置模型属性并保存,php,database,yii,Php,Database,Yii,我想跟踪表中的更改并将其保存到另一个表中。例如,如果有人编辑我的“文本”表,我会将其保存在“文本更改”表中。My textchanges有4列,id、textid(外键)、旧文本、更改日期。我想做的是,在我的文本控制器中,在动作更新附近,我创建了新的textchange模型并设置了属性,但它不起作用 public function actionUpdate($id) { $model = $this->loadModel($id); if (isset($_POS

我想跟踪表中的更改并将其保存到另一个表中。例如,如果有人编辑我的“文本”表,我会将其保存在“文本更改”表中。My textchanges有4列,id、textid(外键)、旧文本、更改日期。我想做的是,在我的文本控制器中,在动作更新附近,我创建了新的textchange模型并设置了属性,但它不起作用

public function actionUpdate($id)
{
    $model = $this->loadModel($id);

        if (isset($_POST['Text'])) {
            $model->attributes = $_POST['Text'];

            $textChange = new TextsChanges();
            $textChange->setAttributes(array('TextId' => $model->text_id, 'TextBefore' => $model->text_text, 'ChangeDate' => new DateTime()));

            if ($model->save())
                $this->redirect(array('view', 'id' => $model->text_id));
                $textChange->save();
        }

        $this->render('update', array(
            'model' => $model,
        ));
}

您应该在指定给模型之前指定旧值,如下所示

public function actionUpdate($id)
{
    $model = $this->loadModel($id);

        if (isset($_POST['Text'])) {
            $textChange = new TextsChanges();
            $textChange->setAttributes(array('TextId' => $model->text_id, 'TextBefore' => $model->text_text, 'ChangeDate' => new DateTime()));

            $model->attributes = $_POST['Text'];

            if ($model->save())
                $this->redirect(array('view', 'id' => $model->text_id));
                $textChange->save();
        }

        $this->render('update', array(
            'model' => $model,
        ));
}