type User struct { ID uint Name string Email *string Age uint8 Birthday *time.Time MemberNumber sql.NullString ActivedAt sql.NullTime CreatedAt time.Time UpdatedAt time.Time }
使用指標做為型別,預設值會是 null,適合用在結構體屬性。
巢狀結構體
使用巢狀結構體定義模型:
1 2 3 4
type User struct { gorm.Model Name string }
使用 gorm.Model 會帶入以下屬性:
1 2 3 4 5 6
type Model struct { ID uint`gorm:"primaryKey"` CreatedAt time.Time UpdatedAt time.Time DeletedAt gorm.DeletedAt `gorm:"index"` }
JSON
定義 JSON 標籤:
使用 json:"-" 隱藏屬性。
使用 json:"column" 重新定義屬性名稱。
使用 json:",omitempty" 隱藏空值屬性。
1 2 3 4 5 6 7 8
type User struct { gorm.Model Name string`gorm:"size:255;not null;"` Email string`gorm:"size:255;not null;uniqueIndex;"` Password string`gorm:"size:255;not null;" json:"-"` Property *Property `gorm:"polymorphic:Owner;polymorphicValue:user;" json:",omitempty"` Entries []Entry `gorm:"polymorphic:Owner;polymorphicValue:user;" json:",omitempty"` }