使用gorm时是否可以省略struct中的FieldID?

Is it possible to omit FieldID in struct when using gorm?

正在查看 example from their documentation:

type User struct {
  gorm.Model
  Name      string
  CompanyID int
  Company   Company
}

type Company struct {
  ID   int
  Name string
}

CompanyID 字段似乎相当多余。是否可以使用 Company 字段上的一些标签来摆脱它?

像这样更改 User 定义就成功了:

type User struct {
  gorm.Model
  Name    string
  Company Company `gorm:"column:company_id"`
}

您可以创建自己的 BaseModel 而不是使用 gorm.Model,例如

type BaseModel struct {
    ID        uint       `gorm:"not null;AUTO_INCREMENT;primary_key;"`
    CreatedAt *time.Time
    UpdatedAt *time.Time
    DeletedAt *time.Time `sql:"index"`
}

然后,在User中,做这样的事情,基本上覆盖默认的Foreign Key

type User struct {
    BaseModel
    Name    string
    Company company `gorm:"foreignKey:id"`
}

和公司

type Company struct {
  BaseModel
  Name string
}