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