메인 콘텐츠로 건너뛰기
관계는 두 객체를 서로 연결합니다. Twenty에서는 관계가 항상 양방향입니다 — 모든 관계에는 두 개의 측면이 있으며, 각 측면은 서로를 참조하는 필드로 선언됩니다.

관계 작동 방식

모든 관계에는 서로를 참조하는 두 개의 필드가 필요합니다:
  1. MANY_TO_ONE 측 — 외래 키를 보유한 객체에 존재합니다.
  2. ONE_TO_MANY 측 — 컬렉션을 소유한 객체에 존재합니다.
두 필드 모두 FieldType.RELATION을 사용하며 relationTargetFieldMetadataUniversalIdentifier를 통해 서로를 교차 참조합니다.

예시: Post Card에는 여러 수신자가 있습니다

PostCard는 여러 PostCardRecipient 레코드에 전송될 수 있습니다. 각 수신자는 정확히 하나의 Post Card에 속합니다. 1단계: PostCard에서 ONE_TO_MANY 측을 정의합니다 (“one” 측):
src/fields/post-card-recipients-on-post-card.field.ts
2단계: PostCardRecipient에서 MANY_TO_ONE 측을 정의합니다 (“many” 측 — 외래 키를 보유함):
src/fields/post-card-on-post-card-recipient.field.ts
순환 임포트: 두 관계 필드는 서로의 universalIdentifier를 참조합니다. 순환 임포트 문제를 피하려면, 각 파일에서 필드 ID를 명명된 상수로 export하고 다른 파일에서 import하세요. 빌드 시스템은 컴파일 시점에 이를 해결합니다.

표준 객체와의 관계 설정

내장 Twenty 객체(Person, Company 등)와 관계를 만들려면 STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS를 사용하세요:
src/fields/person-on-self-hosting-user.field.ts

관계 필드 속성

인라인 관계 필드

defineObject 안에서 관계를 직접 선언할 수도 있습니다. 인라인인 경우에는 objectUniversalIdentifier를 생략하세요 — 상위 객체에서 상속됩니다: