Punkte, die über GORM gestolpert sind

Ich habe neulich mit GORM angefangen und bin viel gestolpert, also werde ich diesen Punkt verlassen.

Insgesamt,

Ich fühlte, dass.

Erkennen Sie die Pluralform des Modellnamens als Tabellennamen

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

Verwenden Sie Eager Loading, um Informationen in verwandten Tabellen auszuwählen

Angenommen, Sie haben zwei Modelle, Bestellung und Person, wie unten gezeigt.

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

Wenn Sie die Person erhalten möchten, wenn Sie die Bestellung erhalten, verwenden Sie Eager Loading (Preload (" Person ")).

db := postgresql.Connection()
var order model.Order
result := db.Preload("Person").Find(&order)

Recommended Posts

Punkte, die über GORM gestolpert sind
Wo ich auf SQLite3 gestoßen bin
Ein Fehler, der beim Erlernen von YOLO mit Google Colab aufgetreten ist
Punkte, die mich als MySQL-Anfänger oft begeistern