Yii2 afterSave。使用changedAttributes显示错误

时间:2016-03-02 06:39:17

标签: yii2 yii2-model

我在Yii2模型的AfterSave功能中有这个奇怪的错误

当我这样做时

public function afterSave($insert, $changedAttributes) {
    parent::afterSave($insert, $changedAttributes);
    if(!$insert):
        print_r($changedAttributes);exit;
        $this->prepareMail(self::MAIL_APPROVE);
    ;
}

我得到了

Array ( 
 [reason_for_travel] => 1 [project_id] => [billable] => 1  
 [advance_required] => 0 [status] => 2  ) // See it contains 'status'

但是当我这样做时

public function afterSave($insert, $changedAttributes) {
    parent::afterSave($insert, $changedAttributes);
    if(!$insert):
        $status = $changedAttributes['status']; // this line shows error
        if($status == Self::STATUS_CONFIRMED):
           $this->prepareMail(self::MAIL_APPROVE);
        ;
    ;
}

$ status = $ changedAttributes [' status'];此行显示错误

错误是"未定义索引:状态"

我没看到什么?

1 个答案:

答案 0 :(得分:3)

使用以下行:

if(!$insert):
  $status = isset($changedAttributes['status']) ? $changedAttributes['status'] : 0); // this line shows error
    if($status == Self::STATUS_CONFIRMED):
       $this->prepareMail(self::MAIL_APPROVE);
    ;
;

$ changedAttributes包含已修改字段的旧值,但仅包含已修改的字段,如果存在" isset"则有效。跳过错误。