1. 惯例
是一个包含一些基本字段的结构体, 包含的字段有 ID
,CreatedAt
, UpdatedAt
, DeletedAt
。
你可以用它来嵌入到你的模型中,或者也可以用它来建立自己的模型。
type User struct {
ID string // 字段名 `ID` 将被作为默认的主键名
}
type Animal struct {
AnimalID int64 `gorm:"primary_key"`
Name string
Age int64
表名是结构体名称的复数形式
// 用 `User` 结构体创建 `delete_users` 表
db.Table("deleted_users").CreateTable(&User{})
var deleted_users []User
db.Table("deleted_users").Find(&deleted_users)
//// SELECT * FROM deleted_users;
db.Table("deleted_users").Where("name = ?", "jinzhu").Delete()
//// DELETE FROM deleted_users WHERE name = 'jinzhu';
你可以通过定义 DefaultTableNameHandler
字段来对表名使用任何规则。
ID uint // 字段名是 `id`
Name string // 字段名是 `name`
Birthday time.Time // 字段名是 `birthday`
}
// 重写列名
type Animal struct {
AnimalId int64 `gorm:"column:beast_id"` // 设置列名为 `beast_id`
Birthday time.Time `gorm:"column:day_of_the_beast"` // 设置列名为 `day_of_the_beast`
Age int64 `gorm:"column:age_of_the_beast"` // 设置列名为 `age_of_the_beast`
}
对于有 CreatedAt
字段的模型,它将被设置为首次创建记录的当前时间。
对于有 UpdatedAt
字段的模型,它将被设置为记录更新时的当前时间。
db.Save(&user) // 将设置 `UpdatedAt` 为当前时间