# 模型事件 模型事件是指在进行模型的写入操作的时候触发的操作行为,包括模型的`save`方法和`delete`方法。 > 模型事件只在调用模型的方法生效,使用查询构造器操作是无效的 模型支持如下事件: | 事件 | 描述 | 快捷方法 | | ------------- | ---- | ------------ | | before_insert | 新增前 | beforeInsert | | after_insert | 新增后 | afterInsert | | before_update | 更新前 | beforeUpdate | | after_update | 更新后 | afterUpdate | | before_write | 写入前 | beforeWrite | | after_write | 写入后 | afterWrite | | before_delete | 删除前 | beforeDelete | | after_delete | 删除后 | afterDelete | 使用方法如下: ``` <?php namespace app\index\model; use think\Model; class User extends Model { public static function init() { self::event('before_insert', function ($user) { if (1 != $user->status) { 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方法中进行模型事件定义: ``` <?php namespace app\index\model; use think\Model; class User extends Model { protected static function init() { self::beforeInsert(function ($user) { if ($user->status != 1) { return false; } }); } } ```