'Prisma schema - Create a relation field from multiple possible foreign keys (OR relation)
How to create a relation field in prisma schema that target 2 possible relation scalar fields ?
For instance, in soccer, let's say we've got the following 2 models:
model Match {
team1Id Int
team1 Team @relation("team1", fields: [team1Id], references: [id])
team2Id Int
team2 Team @relation("team2", fields: [team2Id], references: [id])
}
model Team {
id Int @default(autoincrement()) @id
name String
matches Match[] @relation( /* What to put here ? */ ) // <----
}
What to put in the Team.matches relation field definition in order to allow Team.matchs to contain any match the team played from any side, as team1 or as team2 ?
Solution 1:[1]
This is not possible in Prisma right now! I created an issue in our repo for technical specifications to think about ways for improving this!
Workaround
With Prisma you always need to have a relation field on both sides per relation. This means you need to have two relation fields on Team, one which represents the matches where the team played "as team 1", another where it played "as team 2".
model Match {
team1Id Int
team1 Team @relation("team1", fields: [team1Id], references: [id])
team2Id Int
team2 Team @relation("team2", fields: [team2Id], references: [id])
@@id([team1Id, team2Id])
}
model Team {
id Int @default(autoincrement()) @id
name String
matchesAsTeam1 Match[] @relation("team1")
matchesAsTeam2 Match[] @relation("team2")
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 |
