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.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 :