我是新的Yii2。我陷入了更新中触发更改属性的问题。我只需要更改属性并保存另一个表记录更改为新值。
在保存和保存脏属性之后,请任何人帮我解决这个问题吗?
答案 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
}