yii2aftersave怎么用-创新互联

这篇文章将为大家详细讲解有关yii2 aftersave怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

创新互联建站主要业务有网站营销策划、网站制作、成都网站设计、微信公众号开发、小程序定制开发、H5开发、程序开发等业务。一次合作终身朋友,是我们奉行的宗旨;我们不仅仅把客户当客户,还把客户视为我们的合作伙伴,在开展业务的过程中,公司还积累了丰富的行业经验、全网整合营销推广资源和合作伙伴关系资源,并逐渐建立起规范的客户服务和保障体系。 

yii2在保存完之后,会调用aftersave方法,aftersave里只做了一件事,就是触发了相应的event事件,EVENT_AFTER_INSERT或者EVENT_AFTER_UPDATE,可以看下Yii2的event

yii2 aftersave怎么用

需要把用户提交的数据保存到 look 表,同时表单中的 add_img 图片地址数组,分别保存到 lookmeida 表。

这个多出来的,保存图片的功能,不需要改动控制器的代码,借助 Model 的 afterSave 生命周期函数,就可以自动帮我们完成。原理是look表的记录保存(或者修改)之后,会产生一个 lookid ,然后我们将这个lookid 和 mediaurl 存储到 lookmedia表中去。


  public function afterSave($insert,$changedAttributes)
    {        if (Yii::$app->id=='app-backend'){            //保存图片字段
            $add_imgarr=$this->add_img;            if ($add_imgarr){                foreach (array_filter($add_imgarr) as $mediaurl){
                    $lookmedia=new Lookmedia();
                    $lookmedia->lookid=$this->lookid;
                    $lookmedia->mediaurl=$mediaurl;
                    $lookmedia->type=0;
                    $lookmedia->save();
                }
            }
        }        if (parent::afterSave($insert,$changedAttributes)) {            return true;
        }else return false;
    }

这里只提三点,也算是几个坑吧:

1)afterSave 的参数,$insert 和 $changedAttributes 是固定写法,必须要有,否则报错。

2)函数内部,在本地环境中,我之前写的是 beforeSave 无报错,程序运行正常;但移植到服务器上之后,会报错,于是改为 afterSave 后正常。

3)实测,我们新增的逻辑,必须放在 parent 函数之外,否则不会被执行(图片已经上传,但是lookmedia表中没有记录)

关于“yii2 aftersave怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。


分享名称:yii2aftersave怎么用-创新互联
URL网址:http://scyanting.com/article/gciep.html