事件
模型事件
| 版本 | 新增功能 |
|---|---|
| 5.0.4 | 增加模型事件注冊(cè)快捷方法 |
模型事件是指在進(jìn)行模型的寫入操作的時(shí)候觸發(fā)的操作行為,包括模型的save方法和delete方法。
模型事件只可以在調(diào)用模型的方法才能生效,使用查詢構(gòu)造器通過(guò)Db類操作是無(wú)效的
模型類支持before_delete、after_delete、before_write、after_write、before_update、after_update、before_insert、after_insert事件行為
| 標(biāo)簽位 | 描述 |
|---|---|
| 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;
}
});
注冊(cè)的回調(diào)方法支持傳入一個(gè)參數(shù)(當(dāng)前的模型對(duì)象實(shí)例),并且before_write、before_insert、 before_update 、before_delete事件方法如果返回false,則不會(huì)繼續(xù)執(zhí)行。
支持給一個(gè)位置注冊(cè)多個(gè)回調(diào)方法,例如:
User::event('before_insert', function ($user) {
if ($user->status != 1) {
return false;
}
});
// 注冊(cè)回調(diào)到beforeInsert函數(shù)
User::event('before_insert', 'beforeInsert');
可以在模型類的init方法里面統(tǒng)一注冊(cè)模型事件,例如:
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;
}
});
}
}
調(diào)用當(dāng)前模型也可以寫入 self::event('before_insert', ...)
快捷注冊(cè)(V5.0.4+)
V5.0.4+版本開(kāi)始,系統(tǒng)提供了內(nèi)置的事件注冊(cè)的快捷方法,你可以用下面的方式替代
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;
}
});
}
}
這些模型類的快捷方法如下:
| 標(biāo)簽位 | 描述 |
|---|---|
| beforeInsert | 新增前 |
| afterInsert | 新增后 |
| beforeUpdate | 更新前 |
| afterUpdate | 更新后 |
| beforeWrite | 寫入前 |
| afterWrite | 寫入后 |
| beforeDelete | 刪除前 |
| afterDelete | 刪除后 |
文檔最后更新時(shí)間:2018-04-26 10:09:15
← JSON序列化
未解決你的問(wèn)題?請(qǐng)到「問(wèn)答社區(qū)」反饋你遇到的問(wèn)題
