Ich habe eine Reihe von Kategorien des Typs Product
. Es gibt nur 3 von ihnen, also kann ich für jeden eine Tabelle erstellen. Rufen wir sie SubProductA
, SubProductB
und SubProductC
. Sie sind eindeutig genug, dass das Speichern in den Eltern- Tisch ein Durcheinander machen würde.Wie macht man eine Eins-zu-Eins-Beziehung in GORM?
So natürlich, ich erlaube nur den Primärschlüssel, der Fremdschlüssel zu sein, der zurück zum Produkt für jedes von diesen verbindet. GORM scheint jedoch nicht in der Lage zu sein, ein Feld wie dieses vorzuladen. Hier ist, was ich habe (als Beispiel) für eine von ihnen:
type SubProductA struct {
ProductID uint64 `gorm:"primary_key;ForeignKey:ProductID"`
Product Product
CreatedAt time.Time
UpdatedAt time.Time
DeletedAt *time.Time
}
Allerdings, wenn ich eine Abfrage wie
db.Where("product_id=?", p.ID).Preload("Product").First(&subProduct).Error
Das Ergebnis laufen ist:
Can't preload field Product for models.SubProductA
.
Ich vermute, das liegt daran, dass ich den Primärschlüssel nicht korrekt als Fremdschlüssel identifiziere. Ich habe jedoch eine Menge verschiedener Dinge ausprobiert und bekomme den gleichen Fehler.
Gibt es eine Möglichkeit, dies zu erreichen?