1. 惯例

    是一个包含一些基本字段的结构体, 包含的字段有 IDCreatedAtUpdatedAtDeletedAt

    你可以用它来嵌入到你的模型中,或者也可以用它来建立自己的模型。

    1. type User struct {
    2. ID string // 字段名 `ID` 将被作为默认的主键名
    3. }
    4. type Animal struct {
    5. AnimalID int64 `gorm:"primary_key"`
    6. Name string
    7. Age int64

    表名是结构体名称的复数形式

    1. // 用 `User` 结构体创建 `delete_users` 表
    2. db.Table("deleted_users").CreateTable(&User{})
    3. var deleted_users []User
    4. db.Table("deleted_users").Find(&deleted_users)
    5. //// SELECT * FROM deleted_users;
    6. db.Table("deleted_users").Where("name = ?", "jinzhu").Delete()
    7. //// DELETE FROM deleted_users WHERE name = 'jinzhu';

    你可以通过定义 DefaultTableNameHandler 字段来对表名使用任何规则。

    1. ID uint // 字段名是 `id`
    2. Name string // 字段名是 `name`
    3. Birthday time.Time // 字段名是 `birthday`
    4. }
    5. // 重写列名
    6. type Animal struct {
    7. AnimalId int64 `gorm:"column:beast_id"` // 设置列名为 `beast_id`
    8. Birthday time.Time `gorm:"column:day_of_the_beast"` // 设置列名为 `day_of_the_beast`
    9. Age int64 `gorm:"column:age_of_the_beast"` // 设置列名为 `age_of_the_beast`
    10. }

    对于有 CreatedAt 字段的模型,它将被设置为首次创建记录的当前时间。

    对于有 UpdatedAt 字段的模型,它将被设置为记录更新时的当前时间。

    1. db.Save(&user) // 将设置 `UpdatedAt` 为当前时间