// begin transaction 开始事务 BeforeSave BeforeCreate // save before associations 保存前关联 // update timestamp `CreatedAt`, `UpdatedAt` 更新`CreatedAt`, `UpdatedAt`时间戳 // save self 保存自己 // reload fields that have default value and its value is blank 重新加载具有默认值且其值为空的字段 // save after associations 保存后关联 AfterCreate AfterSave // commit or rollback transaction 提交或回滚事务
1.2. 更新对象
更新过程中可用的回调
1 2 3 4 5 6 7 8 9 10
// begin transaction 开始事物 BeforeSave BeforeUpdate // save before associations 保存前关联 // update timestamp `UpdatedAt` 更新`UpdatedAt`时间戳 // save self 保存自己 // save after associations 保存后关联 AfterUpdate AfterSave // commit or rollback transaction 提交或回滚事务
1.3. 删除对象
删除过程中可用的回调
1 2 3 4 5
// begin transaction 开始事物 BeforeDelete // delete self 删除自己 AfterDelete // commit or rollback transaction 提交或回滚事务
1.4. 查询对象
查询过程中可用的回调
1 2 3
// load data from database 从数据库加载数据 // Preloading (edger loading) 预加载(加载) AfterFind
1.5. 回调示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14
func(u *User)BeforeUpdate()(err error) { if u.readonly() { err = errors.New("read only user") } return }
// 如果用户ID大于1000,则回滚插入 func(u *User)AfterCreate()(err error) { if (u.Id > 1000) { err = errors.New("user id is already greater than 1000") } return }