模型事件是指在進行模型的查詢和寫入操作的時候觸發的操作行為。
> 模型事件只在調用模型的方法生效,使用查詢構造器操作是無效的
模型事件其實是你模型操作中的一種解耦利器,如果不太了解的朋友,可以多研究下它們(可以查看[零基礎視頻模型事件](http://www.hmoore.net/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;
}
~~~