PHP功城狮 2018-07-12 17:03:26 3979次浏览 2条回复 1 2 0
//下面方法是写在控制器

namespace console\modules\order\controllers;

use console\modules\order\Model\tabel;

class EventsController extends Controller
{

    public function actionIndex()
    {
        //必须用save进行操作更新(重要)  表要操作model里的
        $subOrderIOne = table::find()->where(['=','id','1'])->one();

       $subOrderIOne->protype=1;

       $subOrderIOne->save();

    }

}
//下面方法写在model

class tabel extends \base\BaseActiveRecord
{

    public function init()
    {
        parent::init();
       //TabelClass::className()=console\modules\order\Model\TabelClass
        // binded  是TabelClass下的方法
        $this->on(self::EVENT_AFTER_UPDATE,[TabelClass::className(), 'binded']);


    }

}

class TabelClass extends \base\BaseActiveRecord
{
//更新记录后触发
    public static function binded($event)
    {
       //var_dump($event);  打印出修改之后的所有数据(object)   怎么去获取里面的数据 就不用我说了吧, 
    {
}    
//哪有不懂可以问我
觉得很赞
  • 回复于 2018-07-13 10:21 举报

    请楼主说明一下使用触发器比在 model 中使用 afterSave() 的优势在哪里?
    PS: afterSave 也是一种触发器。

    1 条回复
    回复于 2018-07-13 10:39 回复

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

    public function afterSave(){
           parent::afterSave();
           //以下为自定义操作
    }
    

    写在构造函数里 只要调用了这个model里的方法 就会先执行,不管你在进行什么操作(save,updateAll,delete,insert,等)都会去绑定事件 但只有使用save时 会去触发这个事件,
    个人觉得使用 afterSave 会好点

    如果不对 还请补充,我技术也不咋厉害.就是把自己项目中遇到的 都给你们分享一下 说不定会帮助到你们

    觉得很赞
  • 回复于 2018-07-13 10:41 举报

    弱弱的问他一句 咋改我得昵称啊, 我咋找不到

    1 条回复
    回复于 2018-07-13 10:46 回复

    在帐户设置->个人偏好里

您需要登录后才可以回复。登录 | 立即注册