2017-10-21 231 views
0

Je suis en train de créer champ auto-référence à l'aide gorm:Comment créer champ association auto-référencé

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

colonne post_id est pas créé dans DB. J'ai essayé plusieurs noms de champs struct, pas de chance.

Quelle est la bonne façon de gérer les associations auto-réfrénées?

Merci.

Répondre

1

La magie Gorm n'est pas dans la partie association (clé étrangère) mais dans la partie données.

Gorm fera le jointures SQL pour récupérer la ligne Post connexes en fonction PostID Il sera ensuite stocker ces données dans le domaine Post imbriqué dans Post.

Si vous ne fournissez que Post sans PostID Gorm ne fera rien car il n'y a pas de clé étrangère pour travailler avec.

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{})