Maison >développement back-end >Golang >Comment définir et utiliser les contraintes de clé étrangère dans GORM ?
Dans le domaine de la conception de bases de données, les clés étrangères jouent un rôle crucial dans l'établissement de relations et le maintien de l'intégrité des données. . Pour les utilisateurs de GORM, comprendre comment définir et utiliser les contraintes de clé étrangère est essentiel.
Considérez le scénario décrit dans la question, où nous avons deux modèles : User et UserInfo. Nous devons établir une relation de clé étrangère entre le champ UID dans UserInfo et le champ id dans User.
Dans les versions GORM antérieures à 2.0, nous devions définir manuellement la clé étrangère contraintes clés à l’aide de la méthode AddForeignKey. Dans GORM 2.0 et versions ultérieures, cette étape n'est plus nécessaire.
// GORM version 1.x db.Model(&models.UserInfo{}).AddForeignKey("u_id", "t_user(id)", "RESTRICT", "RESTRICT")
Cependant, pour les anciennes versions de GORM, nous pouvons toujours définir des clés étrangères comme indiqué ci-dessous.
type User struct { DBBase Email string `gorm:"column:email" json:"email"` Password string `gorm:"column:password" json:"-"` } func (User) TableName() string { return "t_user" } type UserInfo struct { User User `gorm:"foreignkey:u_id;association_foreignkey:id"` UID uint `gorm:"column:u_id" json:"-"` FirstName string `gorm:"column:first_name" json:"first_name"` LastName string `gorm:"column:last_name" json:"last_name"` Phone string `gorm:"column:phone" json:"phone"` Address string `gorm:"column:address" json:"address"` } func (UserInfo) TableName() string { return "t_user_info" }
Notez que dans cet exemple, nous définissons la relation de clé étrangère avec le gorm:"foreignkey:..." et gorm:"association_foreignkey:..." annotations.
Ensuite, abordons la question de la définition correcte des valeurs de clé étrangère. Dans le code fourni :
func (dao *AuthDAO) Register(rs app.RequestScope, user *models.User, userInfo *models.UserInfo) (userErr error, userInfoErr error) { createUser := rs.Db().Create(&user) userInfo.UID = user.ID createUserInfo := rs.Db().Create(&userInfo) return createUser.Error, createUserInfo.Error }
Nous définissons userInfo.UID sur user.ID après avoir créé l'instance User. Cette approche est valide et établira correctement la relation de clé étrangère.
En conclusion, comprendre les relations de clé étrangère et leur mise en œuvre dans GORM est crucial pour maintenir l'intégrité des données dans les applications basées sur des bases de données. En suivant les solutions et annotations suggérées, vous pouvez définir et utiliser efficacement les contraintes de clé étrangère dans vos modèles GORM.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!