我需要在Teams
中包含TeamHome
和TeamAway
,但我不知道如何实现。
一开始我使用createMany进行优化,但是我不能在createMany中创建一个对象数组,所以我试图解决这个问题。
有什么想法吗?
棱镜v4.10.1
generator client {
provider = "prisma-client-js"
previewFeatures = ["clientExtensions"]
}
datasource db {
provider = "mysql"
...
}
model Team {
...
FixturesHome Fixture[] @relation(name: "home", map: "Fixtures")
FixturesAway Fixture[] @relation(name: "away", map: "Fixtures")
Fixtures Fixture[] @relation(name: "FixtureTeams")
...
}
model Fixture {
...
TeamHome Team? @relation(onDelete: Cascade, fields: [teamHomeId], references: [id], name: "home")
teamHomeId Int?
TeamAway Team? @relation(onDelete: Cascade, fields: [teamAwayId], references: [id], name: "away")
teamAwayId Int?
Teams Team[] @relation(name: "FixtureTeams")
...
}
1条答案
按热度按时间0yg35tkg1#
首先,您的多对多关系没有连接表。任何多对多关系都需要一个单独的连接表,例如"FixturesOnTeams"模型,它包含Fixture和Team主键的复合主键。
Prisma在这里展示了一个例子:https://www.prisma.io/docs/concepts/components/prisma-schema/relations/many-to-many-relations
第二,我想知道您是否需要在两个独立的关系中建模客场队和主队,这是可以作为字段添加到Team模型中的东西,您可以在teamId和type上创建一个复合主键(?你决定什么字段名称在这里合适)并将所有客场球队和主场球队放入一个关系中。您试图将逻辑放入模型的设计中,从而使DB模型的设计变得复杂。这种类型的逻辑应该是您查询的对象,而不是嵌入到表的设计中。