Yii2 保存后。使用changedAttributes显示错误

标签 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'];此行显示错误

错误是“未定义索引:状态”

我没有看到什么?

最佳答案

使用这行:

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”跳过错误,则有效。

关于Yii2 保存后。使用changedAttributes显示错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35740190/

相关文章:

html - 如何控制 yii2 detailView 中的行高和单元格填充?

php - Yii2 "has no relation named"在搜索模型中甚至在主模型中定义的函数

gridview - 如何在 Yii2/GridView 中更改排序器参数?我

php - yii2 在 ActiveDataProvider 中合并来自多个查询的数据

php - Yii2 高级结构(需要另一个应用程序,如前端/后端)

yii2 - 如何在 yii2 中制作图像作为提交按钮

php - Yii2,带有属性名称的自定义验证消息

php - Yii2。一个模型/数据库字段的多个输入

php - Yii Framework 2.0 基于角色的访问控制 RBAC

php - yii2 pdf 生成不工作