zoukankan      html  css  js  c++  java
  • 模型事件

    模型事件

    版本新增功能
    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方法里面统一注册模型事件,例如:

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

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

    快捷注册(V5.0.4+

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

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

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

    标签位描述
    beforeInsert 新增前
    afterInsert 新增后
    beforeUpdate 更新前
    afterUpdate 更新后
    beforeWrite 写入前
    afterWrite 写入后
    beforeDelete 删除前
    afterDelete 删除后
  • 相关阅读:
    linux上的常用的进程与内存优化命令
    ubuntu 上运行的django 出现No space left on device错误
    openstack 使用pbr配置,setup.cfg的格式与含义
    openstack中安装包与组件
    对drf序列化器的理解
    对商品数据表的理解
    首页广告数据表的理解
    对省市区地址的理解
    对邮箱验证的理解
    用户中心个人信息实现的理解
  • 原文地址:https://www.cnblogs.com/q1104460935/p/6916233.html
Copyright © 2011-2022 走看看