• 模型事件


    模型事件

    版本新增功能
    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) {
                    return false;
                }
            });

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

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

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

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

    namespace appindexmodel;
    
    use thinkModel;
    
    class User extends Model
    {
        protected static function init()
        {
            User::event('before_insert', function ($user) {
                if ($user->status != 1) {
                    return false;
                }
            });
        }
    }

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

    快捷注册(V5.0.4+

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

    namespace appindexmodel;
    
    use thinkModel;
    
    class User extends Model
    {
        protected static function init()
        {
            User::beforeInsert(function ($user) {
                if ($user->status != 1) {
                    return false;
                }
            });
        }
    }

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

    标签位描述
    beforeInsert 新增前
    afterInsert 新增后
    beforeUpdate 更新前
    afterUpdate 更新后
    beforeWrite 写入前
    afterWrite 写入后
    beforeDelete 删除前
    afterDelete 删除后
  • 相关阅读:
    ARM的体系结构与编程系列博客——ARM体系版本
    eclipse快捷键
    ARM的体系结构与编程系列博客——ARM的历史与应用范围
    基于LINUX的多功能聊天室
    CC2530自动安全联网
    python3元组
    Python3 列表
    Python3 数字(Number)
    Python3 注释
    python3解释器
  • 原文地址:https://www.cnblogs.com/q1104460935/p/7891464.html
Copyright © 2020-2023  润新知