事件

模型事件

版本 新增功能
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_insertbefore_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

文档
目录

深色
模式

切换
宽度