Declaring Models
Models are usually just normal Golang structs, basic Go types, or pointers of them. sql.Scanner
and driver.Valuer
interfaces are also supported.
Model Example:
type User struct { |
Struct tags
Tags are optional to use when declaring models. GORM supports the following tags:
Supported Struct tags
Tag | Description |
---|---|
Column | Specifies column name |
Type | Specifies column data type |
Size | Specifies column size, default 255 |
PRIMARY_KEY | Specifies column as primary key |
UNIQUE | Specifies column as unique |
DEFAULT | Specifies column default value |
PRECISION | Specifies column precision |
NOT NULL | Specifies column as NOT NULL |
AUTO_INCREMENT | Specifies column auto incrementable or not |
INDEX | Create index with or without name, same name creates composite indexes |
UNIQUE_INDEX | Like INDEX , create unique index |
EMBEDDED | Set struct as embedded |
EMBEDDED_PREFIX | Set embedded struct’s prefix name |
- | Ignore this fields |
Struct tags for Associations
Check out the Associations section for details
Tag | Description |
---|---|
MANY2MANY | Specifies join table name |
FOREIGNKEY | Specifies foreign key |
ASSOCIATION_FOREIGNKEY | Specifies association foreign key |
POLYMORPHIC | Specifies polymorphic type |
POLYMORPHIC_VALUE | Specifies polymorphic value |
JOINTABLE_FOREIGNKEY | Specifies foreign key of jointable |
ASSOCIATION_JOINTABLE_FOREIGNKEY | Specifies association foreign key of jointable |
SAVE_ASSOCIATIONS | AutoSave associations or not |
ASSOCIATION_AUTOUPDATE | AutoUpdate associations or not |
ASSOCIATION_AUTOCREATE | AutoCreate associations or not |
ASSOCIATION_SAVE_REFERENCE | AutoSave associations reference or not |
PRELOAD | Auto Preload associations or not |