2017-07-05 2 views
0

Ich versuche, eine Selbstreferenz in einer (my) SQL-Tabelle mit Golang Gorm zu erstellen. Im Moment sieht mein Code wie folgt aus:gorm golang one2many gleiche Tabelle

type Person struct { 
    gorm.Model 
    Name string 
    Children []*Person `gorm:"ForeignKey:ParentID"` 
    ParentID uint 
} 

func main() { 
    /* code to get database connection omitted */ 

    p := &Person{Name:"Sally"} 
    db.Create(p) 

    children := []*Person{ {Name:"Jane", ParentID:p.ID}, 
     {Name:"Tom", ParentID:p.ID}} 

    for _, child := range children { 
     db.Create(child) 
    } 

    var children2 []*Person 

    db.Model(p).Related(children2, "ParentID") 
} 

Der Code scheitert mit einem Fehler „reflect.Value.Set nicht adressierbaren Wert mit“.

Weiß jemand, wie man diese Beziehung mit go gorm funktioniert?

Vielen Dank im Voraus :)

Antwort

1

Zum Glück gorm hat in letzter Zeit diese Funktion (Referenz: here) hinzugefügt.

In Ihrem Fall sollte wie folgt sein:

type Person struct { 
    gorm.Model 
    Name string 
    Children []*Person `gorm:"many2many: children;association_jointable_foreignkey:children_id"` 
} 
Verwandte Themen