Appartient à (Belongs To)
Une association belongs to
met en place une connexion individuelle avec un autre modèle, de telle sorte que chaque instance du modèle déclarant “appartient” à une instance de l’autre modèle.
Par exemple, si votre application comprend des utilisateurs et des entreprises, et que chaque utilisateur peut être assigné à une seule entreprise, les types suivants représentent cette relation. Notez ici que, sur l’objet User
, il y a à la fois une CompanyID
ainsi qu’une Company
. Par défaut, la CompanyID
est implicitement utilisée pour créer une relation clé étrangère entre les tables User
et Company
et donc doit être inclus dans la structure User
afin de remplir la structure intérieure Company
.
// `User` appartient à `Company`, `CompanyID` est la clé étrangère |
Reportez-vous à Eager Loading pour plus de détails sur le remplissage de la structure intérieure.
Redéfinir la clé étrangère
Pour définir une relation d’appartenance, la clé étrangère doit exister, la clé étrangère par défaut utilise le nom de type du propriétaire plus son nom de champ primaire.
Pour l’exemple ci-dessus, définir le modèle User
qui appartient à Company
, la clé étrangère doit être CompanyID
par convention
GORM fournit un moyen de personnaliser la clé étrangère, par exemple :
type User struct { |
Surcharger les références
Pour une appartenance à une relation, GORM utilise généralement le champ principal du propriétaire comme valeur de la clé étrangère, pour l’exemple ci-dessus, il s’agit du champ Company
du champ ID
.
Lorsque vous assignez un utilisateur à une entreprise, GORM enregistrera l’ ID
de l’entreprise dans le champ CompanyID
de l’utilisateur.
Vous pouvez le modifier avec le tag references
, par exemple:
type User struct { |
NOTE GORM devine généralement la relation comme
has one
si le nom de la clé étrangère est déjà remplacé dans le type du propriétaire, nous devons spécifierreferences
dans la relationbelongs to
.
type User struct { |
CRUD avec Belongs To
Veuillez consulter le Mode d’association pour travailler avec les relations belongs to
Chargement Eager (pressé)
GORM permet au chargement désireux d’appartenir à des associations avec Preload
ou Joins
, se référer à Préchargement (Eager loading) pour plus de détails
Contraintes de la CLÉ étrangère
Vous pouvez configurer les contraintes OnUpdate
, OnDelete
avec la contrainte de balise constraint
, il sera créé lors de la migration avec GORM, par exemple :
type User struct { |