事件
模型事件
| 版本 | 新增功能 | 
|---|---|
| 5.0.4 | 增加模型事件注册快捷方法 | 
模型事件是指在进行模型的写入操作的时候触发的操作行为,包括模型的save方法和delete方法。
模型事件只可以在调用模型的方法才能生效,使用查询构造器通过Db类操作是无效的
	模型类支持before_delete、after_delete、before_write、after_write、before_update、after_update、before_insert、after_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_write、before_insert、 before_update 、before_delete事件方法如果返回false,则不会继续执行。
支持给一个位置注册多个回调方法,例如:
        User::event('before_insert', function ($user) {
            if ($user->status != 1) {
                return false;
            }
        });
        // 注册回调到beforeInsert函数
        User::event('before_insert', 'beforeInsert');
可以在模型类的init方法里面统一注册模型事件,例如:
namespace app\index\model;
use think\Model;
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 app\index\model;
use think\Model;
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 | 删除后 | 
文档最后更新时间:2018-04-26 10:09:15
                
                                        ← JSON序列化
                                    
                
                    未解决你的问题?请到「问答社区」反馈你遇到的问题
                
            