模型事件
模型事件是指在进行模型的查询和写入操作的时候触发的操作行为。
模型事件只在调用模型的方法生效,使用查询构造器操作是无效的
模型支持如下事件:
事件 | 描述 | 事件方法名 |
---|---|---|
after_read | 查询后 | onAfterRead |
before_insert | 新增前 | onBeforeInsert |
after_insert | 新增后 | onAfterInsert |
before_update | 更新前 | onBeforeUpdate |
after_update | 更新后 | onAfterUpdate |
before_write | 写入前 | onBeforeWrite |
after_write | 写入后 | onAfterWrite |
before_delete | 删除前 | onBeforeDelete |
after_delete | 删除后 | onAfterDelete |
before_restore | 恢复前 | onBeforeRestore |
after_restore | 恢复后 | onAfterRestore |
注册的回调方法支持传入一个参数(当前的模型对象实例),但支持依赖注入的方式增加额外参数。
如果
before_write
、before_insert
、before_update
、before_delete
事件方法中返回false
或者抛出think\exception\ModelEventException
异常的话,则不会继续执行后续的操作。
触发顺序:
// 执行 onBeforeWrite
// 如果事件没有返回`false`,那么继续执行
// 执行新增或更新操作(onBeforeInsert/onAfterInsert或onBeforeUpdate/onAfterUpdate)
// 新增或更新执行成功
// 执行 onAfterWrite
写入事件
onBeforeWrite
和onAfterWrite
事件会在新增
操作和更新
操作都会触发.
模型事件定义
/**
* 【模型事件】查询后
* @param self $model
* @return void
*/
public static function onAfterRead(self $model): void
{
// TODO: Change the autogenerated stub
}
/**
* 【模型事件】新增前
* @param self $model
* @return bool|null
*/
public static function onBeforeInsert(self $model): ?bool
{
// TODO: Change the autogenerated stub
return true;
}
/**
* 【模型事件】新增后
* @param self $model
* @return void
*/
public static function onAfterInsert(self $model): void
{
// TODO: Change the autogenerated stub
}
/**
* 【模型事件】更新前
* @param self $model
* @return bool|null
*/
public static function onBeforeUpdate(self $model): ?bool
{
// TODO: Change the autogenerated stub
return true;
}
/**
* 【模型事件】更新后
* @param self $model
* @return void
*/
public static function onAfterUpdate(self $model): void
{
// TODO: Change the autogenerated stub
}
/**
* 【模型事件】删除前
* @param self $model
* @return bool|null
*/
public static function onBeforeDelete(self $model): ?bool
{
// TODO: Change the autogenerated stub
return true;
}
/**
* 【模型事件】删除后
* @param self $model
* @return void
*/
public static function onAfterDelete(self $model): void
{
// TODO: Change the autogenerated stub
}
/**
* 【模型事件】写入前
* @param self $model
* @return bool|null
*/
public static function onBeforeWrite(self $model): ?bool
{
// TODO: Change the autogenerated stub
return true;
}
/**
* 【模型事件】写入后
* @param self $model
* @return void
*/
public static function onAfterWrite(self $model): void
{
// TODO: Change the autogenerated stub
}
/**
* 【模型事件】恢复前
* @param self $model
* @return void
*/
public static function onBeforeRestore(self $model): void
{
// TODO: Change the autogenerated stub
}
/**
* 【模型事件】恢复后
* @param self $model
* @return void
*/
public static function onAfterRestore(self $model): void
{
// TODO: Change the autogenerated stub
}
版权属于:大卫科技Blog
本文链接:https://www.iyuu.cn/archives/507/
转载时须注明出处