Skip to main content
关系用于将两个对象连接在一起。 在 Twenty 中,关系始终是 双向的——每个关系都有两侧,每一侧都作为一个字段声明,并引用另一侧。

关系如何工作

每个关系都需要两个相互引用的字段:
  1. MANY_TO_ONE 侧——位于持有外键的对象上。
  2. ONE_TO_MANY 侧——位于拥有集合的对象上。
两个字段都使用 FieldType.RELATION,并通过 relationTargetFieldMetadataUniversalIdentifier 相互交叉引用。

示例:Post Card 拥有多个收件人

一个 PostCard 可以发送给多个 PostCardRecipient 记录。 每个收件人只隶属于一张 PostCard。 步骤 1:在 PostCard 上定义 ONE_TO_MANY 侧(“一”侧):
src/fields/post-card-recipients-on-post-card.field.ts
步骤 2:在 PostCardRecipient 上定义 MANY_TO_ONE 侧(“多”侧——持有外键):
src/fields/post-card-on-post-card-recipient.field.ts
**循环导入:**两个关系字段相互引用对方的 universalIdentifier。 为避免循环导入问题,请在各自文件中将字段 ID 作为具名常量导出,并在另一个文件中导入它们。 构建系统会在编译时解析这些引用。

与标准对象建立关系

要与内置的 Twenty 对象(Person、Company 等)建立关系,请使用 STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS
src/fields/person-on-self-hosting-user.field.ts

关系字段属性

内联关系字段

你也可以直接在 defineObject 中声明关系。 以内联方式声明时,省略 objectUniversalIdentifier——它会从父对象继承: