具有脏属性的aftersave()和beforesave()

时间:2017-08-18 04:39:32

标签: php yii2

我是新的Yii2。我陷入了更新中触发更改属性的问题。我只需要更改属性并保存另一个表记录更改为新值。

在保存和保存脏属性之后,请任何人帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

在yii \ db \ ActiveRecord中使用getAttributes()和getOldAttributes方法。 即:

public actionUpdate($id)
{
    $model = $this->findModel($id);
    if ($model->load(Yii::$app->request->post())) {
        $changed_attributes = array_diff_assoc($model->getOldAttributes(), $model->getAttributes());
        if($model->save()) {
            //Save changed values in other table
           //$changed_attributes contains attribute_name=>value pairs of changed(old) attributes. and $model contains new values. 
        }
    }
}

答案 1 :(得分:0)

在ActiveRecord模型中:

public function afterSave($insert, $changeAttributes)
{
    parent::afterSave($insert, $changeAttributes);

    // $changeAttributes
}