Points qui ont trébuché sur GORM

J'ai commencé GORM l'autre jour et j'ai beaucoup trébuché, alors je vais laisser ce point.

Global,

J'ai ressenti cela.

Reconnaître la forme plurielle du nom du modèle comme nom de table

--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"
}

Utilisez Eager Loading pour sélectionner des informations dans des tables associées

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)

Recommended Posts

Points qui ont trébuché sur GORM
Où je suis tombé sur SQLite3
Une erreur survenue lors de l'apprentissage de YOLO avec Google Colab
Points sur lesquels je suis souvent accro à l'écriture en tant que débutant MySQL