模型事件

模型事件

版本新增功能
5.0.4增加模型事件注册快捷方法

模型事件是指在进行模型的写入操作的时候触发的操作行为,包括模型的save方法和delete方法。

模型事件只可以在调用模型的方法才能生效,使用查询构造器通过Db类操作是无效的

模型类支持before_deleteafter_deletebefore_writeafter_writebefore_updateafter_updatebefore_insertafter_insert事件行为

标签位描述
before_insert新增前
after_insert新增后
before_update更新前
after_update更新后
before_write写入前
after_write写入后
before_delete删除前
after_delete删除后

使用方法如下:

User::event('before_insert', function($user){
            if ($user->status != 1) {
                returnfalse;
            }
        });

注册的回调方法支持传入一个参数(当前的模型对象实例),并且before_writebefore_insert before_update before_delete事件方法如果返回false,则不会继续执行。

支持给一个位置注册多个回调方法,例如:

        User::event('before_insert', function($user){
            if ($user->status != 1) {
                returnfalse;
            }
        });
        // 注册回调到beforeInsert函数
        User::event('before_insert', 'beforeInsert');

可以在模型类的init方法里面统一注册模型事件,例如:

namespaceapp\index\model;

usethink\Model;

classUserextendsModel
{
    protectedstaticfunctioninit()
{
        User::event('before_insert', function($user){
            if ($user->status != 1) {
                returnfalse;
            }
        });
    }
}

调用当前模型也可以写入 self::event('before_insert', ...)

快捷注册(V5.0.4+

V5.0.4+版本开始,系统提供了内置的事件注册的快捷方法,你可以用下面的方式替代

namespaceapp\index\model;

usethink\Model;

classUserextendsModel
{
    protectedstaticfunctioninit()
{
        User::beforeInsert(function($user){
            if ($user->status != 1) {
                returnfalse;
            }
        });
    }
}

这些模型类的快捷方法如下:

标签位描述
beforeInsert新增前
afterInsert新增后
beforeUpdate更新前
afterUpdate更新后
beforeWrite写入前
afterWrite写入后
beforeDelete删除前
afterDelete删除后

转载于:https://www.cnblogs.com/q1104460935/p/6916233.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值