Ich habe neulich mit GORM angefangen und bin viel gestolpert, also werde ich diesen Punkt verlassen.
Insgesamt,
Ich fühlte, dass.
Person
** als Modell definieren, wird der Tabellenname als ** Personen
** behandelt.// 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"
}
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)