事件-j9九游
模型事件
版本 | 新增功能 |
---|---|
5.0.4 | 增加模型事件注册快捷方法 |
模型事件是指在进行模型的写入操作的时候触发的操作行为,包括模型的save方法和delete方法。
模型事件只可以在调用模型的方法才能生效,使用查询构造器通过db类操作是无效的
模型类支持before_delete
、after_delete
、before_write
、after_write
、before_update
、after_update
、before_insert
、after_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_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方法里面统一注册模型事件,例如:
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
← json序列化
未解决你的问题?请到「问答社区」反馈你遇到的问题