开发

    当我们开始执行任何操作时,GORM将基于当前的*gorm.DB创建一个新的*gorm.Scope实例

    1. // 执行查询操作
    2. db.First(&user)

    对于上面的例子,将调用querying,参考查询回调

    写插件 {#w}

    1. db.Callback().Create().Remove("gorm:create")
    2. // 从Create回调中删除`gorm:create`回调
    1. db.Callback().Create().After("gorm:create").Register("update_created_at", updateCreated)
    2. db.Callback().Delete().After("gorm:delete").Register("my_plugin:after_delete", afterDelete)
    3. db.Callback().Update().Before("gorm:update").Register("my_plugin:before_update", beforeUpdate)
    4. db.Callback().Create().Before("gorm:create").After("gorm:before_create").Register("my_plugin:before_create", beforeCreate)

    GORM定义了回调以执行其CRUD操作,在开始编写插件之前检查它们。

    • Create callbacks
    • Query callbacks
    • Row Query callbacks
      Row Query callbacks将在运行Row或时被调用,默认情况下没有注册的回调,你可以注册一个新的回调: