Yii设置模型属性并保存

时间:2017-04-28 11:36:30

标签: php database yii

我想跟踪表格中的更改并将其保存在另一个表格中。例如,如果有人编辑了我的“文本”表,我将其保存在“textchanges”表中。我的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,
        ));
}

1 个答案:

答案 0 :(得分:0)

您应该在分配给模型之前分配旧值,如下所示。

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,
        ));
}