创建的时候,在插入数据之前,想要做一些事情。钩子函数比较简单,就是实现before create的一个方法。
package main
import (
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
type Student struct {
ID int64
Name string `gorm:"size:6"`
Age int
Email *string
}
func (*Student) TableName() string {
return "student"
}
func (student *Student) BeforeCreate(tx *gorm.DB) error {
email := "1239683670@qq.com"
student.Email = &email
//确定要添加的话就返回nil
return nil
}
func main() {
dsn := "root:7PXjAkY!&nlR@tcp(192.168.11.128:3306)/test?charset=utf8mb4&parseTime=True&loc=Local"
db, _ := gorm.Open(mysql.Open(dsn), &gorm.Config{})
db.AutoMigrate(&Student{})
db.Create(&Student{
Name: "hh",
Age: 1,
})
}
mysql> select * from student;
+----+-------+------+-------------------+
| id | name | age | email |
+----+-------+------+-------------------+
| 1 | lucas | 30 | NULL |
| 3 | hh | 1 | 1239683670@qq.com |
+----+-------+------+-------------------+