Entity Relationships
Define one-to-one, one-to-many and many-to-many relationships between entities
One-To-One (1:1) Relationships
In One-To-One relation, one entity instance is related to only one instance of another entity. One side of the relationship should always derive.
type User @entity {
name: String!
profile: Profile! @derivedFrom(field: "user")
}
type Profile @entity {
avatar: String!
user: User!
}Database tables:
user
| Column | Type
----------|-------
| id | character varying
| name | character varying profile
| Column | Type
----------|-------
| id | character varying
| avatar | character varying
| userId | character varying FOREIGN KEY UNIQUE CONSTRAINTOne-To-Many (1:n) Relationships
In One-To-Many relation, one entity instance is related to multiple instances of the other entity.
Database table for the Post entity:
The only difference between 1:1 and 1:n is the unique constraint that 1:1 has.
Many-To-Many (n:n) Relationships
Many-To-Many is a relationship where one entity instance is related to a collection of instances of other entities and vice-versa. In this relationship, one side of the relation must derive.
A junction table is created for n:n relationship.
Database tables:
Reverse Lookups
Defining reverse lookups on an entity allows you to query the other side of the relation. Use @derivedFrom directive to add a reverse lookup to an entity.
Example If we want to access a user's posts from the user entity we should add a derived field to User entity:
Relationships In Mappings
Each GraphQL entity has a corresponding TypeORM entity and we use these entities to perform CRUD operations.
Example
We will create a new post for an existing user:
Last updated
Was this helpful?