Вот код
public function afterSave($insert, $changedAttributes){
if(isset($changedAttributes['parent_id'])){
$transaction=Yii::$app->db->beginTransaction();
$this->tree_path=$this->parent_id?$this->parent->tree_path.'.'.$this->id:"$this->id";
try{
if(!$this->save()){
throw new ErrorException($this->errors);
}
$transaction->commit();
}catch (ErrorException $ex){
$transaction->rollBack();
Yii::error( $ex->getMessage(),$category = 'application');
return false;
}
}
parent::afterSave($insert, $changedAttributes);
}
и вроде отрабатывает но есть одно но если parent_id изначально был равен null но был изменен то я в if не попадаю потому что $changedAttributes['parent_id'] равно null. Как правильно сохранять изменения в модель в случае если изменен атрибут.