J'ai commencé GORM l'autre jour et j'ai beaucoup trébuché, alors je vais laisser ce point.
Global,
J'ai ressenti cela.
--Par défaut ** Reconnaître la forme plurielle du nom Struct comme nom de table **
-Si vous définissez une structure nommée ** Person
** comme modèle, le nom de la table sera traité comme ** people
**.
// Tabler is interface of gorm table name
type Tabler interface {
TableName() string
}
// Person is the model of persons
type Person struct {
ID string `gorm:"column:person_id;type:uuid;primaryKey"`
Name string `gorm:"column:name;type:text;not null"`
Weight int
}
// TableName gets table name of Person
func (Person) TableName() string {
return "persons"
}
Supposons que vous ayez deux modèles, Order et Person, comme indiqué ci-dessous.
package model
// Order is the model of orders
type Order struct {
ID string `gorm:"column:order_id;type:uuid"`
PersonID string `gorm:"type:uuid"`
Person Person // `gorm:"foreignKey:PersonID;references:ID"`
}
// Tabler is interface of gorm table name
type Tabler interface {
TableName() string
}
// Person is the model of persons
type Person struct {
ID string `gorm:"column:person_id;type:uuid;primaryKey"`
Name string `gorm:"column:name;type:text;not null"`
Weight int
}
// TableName gets table name of Person
func (Person) TableName() string {
return "persons"
}
Si vous souhaitez obtenir la personne lorsque vous recevez la commande, utilisez Eager Loading (Preload (" Person ")
).
db := postgresql.Connection()
var order model.Order
result := db.Preload("Person").Find(&order)