Relations de bases de données avec GORM : création de clés étrangères
Dans le domaine des bases de données relationnelles, les clés étrangères servent de liens cruciaux entre les tables liées. Cet article vise à vous guider sur la façon d'établir une relation de clé étrangère dans votre application Golang à l'aide de GORM, une bibliothèque ORM (Object-Relational Mapping) populaire.
Comprendre le problème
Vous avez défini deux modèles, User et UserInfo, et souhaitez établir une relation de clé étrangère entre leurs champs UID et ID. Le défi consiste à s'assurer que le champ UID du modèle UserInfo référence correctement le champ id du modèle User.
Solution
Pour résoudre ce problème, vous devez configurez une contrainte de clé étrangère dans votre schéma de base de données après avoir défini vos modèles. Ceci peut être réalisé en suivant les étapes suivantes :
1. Ajouter une clé étrangère pendant la migration
Après avoir créé les modèles, utilisez la méthode AddForeignKey de GORM pour spécifier la relation de clé étrangère dans la migration de votre base de données. Ajoutez la ligne suivante à votre code de migration :
db.Model(&models.UserInfo{}).AddForeignKey("u_id", "t_user(id)", "RESTRICT", "RESTRICT")
Cette ligne établit une contrainte de clé étrangère sur la colonne UID de la table t_user_info, faisant référence à la colonne id de la table t_user. Il définit également le comportement de la clé étrangère sur "RESTRICT", ce qui empêchera l'insertion ou la suppression de données qui violeraient la relation.
2. Définir la clé étrangère d'association
Dans votre modèle Utilisateur, vous avez annoté le champ Utilisateur dans le modèle UserInfo avec une balise de clé étrangère :
User User `gorm:"foreignkey:u_id;association_foreignkey:id"`
Cette balise informe GORM que l'utilisateur Le champ doit être utilisé comme clé étrangère et qu'il est associé au champ id dans le modèle utilisateur.
3. Mettre à jour la base de données
Exécutez la migration de la base de données pour appliquer la contrainte de clé étrangère à votre schéma.
Remarque :
À partir de GORM version 2.0 , il n'est plus nécessaire de définir explicitement des contraintes de clé étrangère dans les annotations du modèle. Cependant, pour les versions antérieures, la solution décrite ci-dessus s'applique toujours.
En suivant ces étapes, vous avez établi une relation de clé étrangère appropriée entre vos modèles User et UserInfo, garantissant que le champ UID du modèle UserInfo fait référence avec précision les données dans la table User.
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!