模型事件是指在进行模型的查询和写入操作的时候触发的操作行为。
> 模型事件只在调用模型的方法生效,使用查询构造器操作是无效的
模型事件其实是你模型操作中的一种解耦利器,如果不太了解的朋友,可以多研究下它们(可以查看[零基础视频模型事件](https://www.kancloud.cn/laowu199/wootp6/2409040))。系统中有很多功能,都是利用模型事件来完成的。
这里的模型事件,系统已经经过了改造,没有按照TP的文档来(当然底层还是按TP方式来的)。
模型事件列表:
~~~
// 查询后
public function afterReadCall()
// 新增前
public function beforeInsertCall()
// 新增后
public function afterInsertCall()
// 更新前
public function beforeUpdateCall()
// 更新后
public function afterUpdateCall()
// 写入前
public function beforeWriteCall()
// 写入后
public function afterWriteCall()
// 删除前
public function beforeDeleteCall()
// 删除后
public function afterDeleteCall()
// 恢复前
public function beforeRestoreCall()
// 恢复后
public function afterRestoreCall()
~~~
为了防止父类模型事件中的代码丢失,我们建议你的事件代码是这样写的:
~~~
/**
* 模型事件示范
* 自执行时机:新增后
*/
public function afterInsertCall()
{
// 调用父类同名方法,防止父类定义的模型事件代码丢失
$parent_return = call_user_func(array('parent', __FUNCTION__));
// 在这里定义你自己的代码 ...
return $parent_return;
}
~~~