Yii 内置触发器(事件) --更新记录后触发 [ 技术分享 ]
//下面方法是写在控制器
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) 怎么去获取里面的数据 就不用我说了吧,
{
}
//哪有不懂可以问我
共 2 条回复
-
请楼主说明一下使用触发器比在
model
中使用afterSave()
的优势在哪里?
PS:afterSave
也是一种触发器。共 1 条回复Yii2在保存完之后,会调用
afterSave
方法,afterSave
里只做了一件事,就是触发了相应的event
事件,EVENT_AFTER_INSERT
或者EVENT_AFTER_UPDATE
public function afterSave(){ parent::afterSave(); //以下为自定义操作 }
写在构造函数里 只要调用了这个model里的方法 就会先执行,不管你在进行什么操作(save,updateAll,delete,insert,等)都会去绑定事件 但只有使用save时 会去触发这个事件,
个人觉得使用afterSave
会好点如果不对 还请补充,我技术也不咋厉害.就是把自己项目中遇到的 都给你们分享一下 说不定会帮助到你们
Abble 觉得很赞
PHP功城狮 北京
注册时间:2018-07-03
最后登录:2024-09-09
在线时长:13小时21分
最后登录:2024-09-09
在线时长:13小时21分
- 粉丝4
- 金钱540
- 威望10
- 积分770