ThinkPHP模型事件

模型事件

模型事件是指在进行模型的查询和写入操作的时候触发的操作行为。

模型事件只在调用模型的方法生效,使用查询构造器操作是无效的

模型支持如下事件:

事件描述事件方法名
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_writebefore_insertbefore_updatebefore_delete事件方法中返回false或者抛出think\exception\ModelEventException异常的话,则不会继续执行后续的操作。

触发顺序:

// 执行 onBeforeWrite
// 如果事件没有返回`false`,那么继续执行
// 执行新增或更新操作(onBeforeInsert/onAfterInsert或onBeforeUpdate/onAfterUpdate)
// 新增或更新执行成功
// 执行 onAfterWrite

写入事件

onBeforeWriteonAfterWrite事件会在新增操作和更新操作都会触发.

模型事件定义

    /**
     * 【模型事件】查询后
     * @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
    }
最后修改:2023 年 12 月 12 日 10 : 32 AM
如果觉得我的文章对你有用,请随意赞赏

发表评论