在 Prisma 中,我想对以下内容进行建模,但我不确定如何。
type Event {
id: ID! @unique
players: [User]! @relation(name: "EventPlayers")
teams: [Team]! @relation(name: "EventTeams")
...
}
type User {
id: ID! @unique
eventsPlayed: [Event]! @relation(name: "EventPlayers")
...
}
type Team {
id: ID! @unique
event: Event! @relation(name: "EventTeams")
members: [User]! @relation(name: ?????)
...
}
约束
- 每个都
team member
必须在Event.players
- 每个
Event.player
只能分配给一个(或没有)团队
问题
我有一种感觉,我需要一个多对多的关系,但我正在努力解决这个问题。我有什么关系Team.members
??????我什至正确地接近这个?
更多信息(以防万一)
我打算为创建团队创建一个拖放界面。那些列在Events.players
其中但尚未被分配为 a 的Team.member
将在unassigned
存储桶中。将它们拖到一个团队中,会将它们分配为Team.member
. events { players { id }}
但是,我想查询所有玩家events { teams { members { id }}}
更新
在考虑了更多之后,我正在考虑一种不同的方法来解决这个问题。这是一个更新的架构,我很喜欢你的想法/意见。
type Event {
id: ID! @unique
users: [EventUser!]!
teams: [Team!]!
title: string
}
type EventUser {
event: Event!
user: User!
role: EventRole!
}
type User {
id: ID! @unique
events: [EventUser!]!
name: string
}
type Team {
event: Event!
members: [EventUser!]!
name: string
}
enum EventRole {
ADMIN
COORDINATOR
JUDGE
PLAYER
REVIEWER
SPONSOR
}