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

Time:12-19

Looking at an example from their documentation:

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

type Company struct {
  ID   int
  Name string
}

CompanyID field seems rather redundant. Is it possible to get rid of it using some tags on Company field instead?

CodePudding user response:

Changing User definition like this did the trick:

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

CodePudding user response:

You can create your own BaseModel instead of using gorm.Model, for example

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

Then, in the User, do something like this, basically overriding the default Foreign Key

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

And the Company

type Company struct {
  BaseModel
  Name string
}
  • Related