Как привильно отловить изменения атрибута в AffterSave?

Вот код

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. Как правильно сохранять изменения в модель в случае если изменен атрибут.
  • Вопрос задан
  • 57 просмотров
Пригласить эксперта
Ответы на вопрос 1
Sergalas
@Sergalas Автор вопроса
Учусь
вот собственно вместо тысячи слов одна строка кода
array_key_exists('parent_id', $changedAttributes)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы