2017-10-21 1 views
0

Ich versuche selbstReferenzFeld gorm mit zu erstellen:Wie Erstellen selbst verwiesen Assoziation Feld

type Post struct { 
    ID  uint  `gorm:"primary_key" json:"id"` 
    Post  *Post  `json:"post" xml:"post" sql:"default:null"` 
} 
db.AutoMigrate(&Post{}) 

Spalte post_id ist nicht in DB erstellt. Versuchte mehrere Feldnamen, kein Glück.

Welcher ist die richtige Methode, um sich selbst referenzierende Assoziationen zu behandeln?

Vielen Dank.

Antwort

1

Die Gorm Magie ist nicht in der Assoziation (Fremdschlüssel) Teil, sondern im Datenteil. Es speichert dann diese Daten in der verschachtelten Post Feld in Post

Gorm wird die SQL tun schließt sich der zugehörige Post Reihe auf PostID basierend abzurufen.

Wenn Sie nur Post ohne PostID angeben, wird Gorm nichts tun, da es keinen Fremdschlüssel gibt, mit dem es arbeiten kann.

type Post struct { 
    ID  uint  `gorm:"primary_key" json:"id"` 
    Post  *Post  `json:"post" xml:"post" sql:"default:null"` 
    PostID uint  `json:"post_id" xml:"post_id"` 
} 
db.AutoMigrate(&Post{}) 
Verwandte Themen