Fonctionnement des relations
Chaque relation nécessite deux champs qui se référencent mutuellement :- Le côté MANY_TO_ONE — réside sur l’objet qui détient la clé étrangère.
- Le côté ONE_TO_MANY — réside sur l’objet qui possède la collection.
FieldType.RELATION et se référencent mutuellement via relationTargetFieldMetadataUniversalIdentifier.
Exemple : une carte postale a de nombreux destinataires
UnPostCard peut être envoyé à de nombreux enregistrements PostCardRecipient. Chaque destinataire appartient à exactement une carte postale.
Étape 1: Définir le côté ONE_TO_MANY sur PostCard (le côté “one”) :
src/fields/post-card-recipients-on-post-card.field.ts
src/fields/post-card-on-post-card-recipient.field.ts
Imports circulaires : les deux champs de relation se référencent l’un l’autre via leur
universalIdentifier. Pour éviter les problèmes d’import circulaire, exportez les ID de vos champs en tant que constantes nommées depuis chaque fichier, puis importez-les dans l’autre. Le système de build les résout au moment de la compilation.Relations de jonction
Un objet de jonction connecte un enregistrement source à un ou plusieurs enregistrements cibles. Par exemple,PostCardRecipient peut contenir à la fois une relation postCard et une relation recipient. Dans le champ ONE_TO_MANY de l’objet source, définissez junctionTargetFieldUniversalIdentifier sur le champ de relation de l’objet de jonction qui pointe vers la cible :
RECIPIENT_FIELD_ID doit identifier une relation MANY_TO_ONE ou une relation morph sur l’objet de jonction. Il indique à Twenty quel enregistrement associé est la cible lorsqu’une fonctionnalité telle que la diffusion des activités de chronologie parcourt la jonction.
Relation avec des objets standard
Pour créer une relation avec un objet Twenty intégré (Person, Company, etc.), utilisezSTANDARD_OBJECT_UNIVERSAL_IDENTIFIERS :
src/fields/person-on-self-hosting-user.field.ts
Propriétés des champs de relation
Champs de relation en ligne
Vous pouvez également déclarer une relation directement à l’intérieur dedefineObject. Lorsqu’il est en ligne, omettez objectUniversalIdentifier — il est hérité de l’objet parent :