如何在Prisma中声明可选双向一对一关系?
问题解决:Prisma双向一对一关系配置错误
你遇到的错误原因是:在双向一对一关系中,Prisma只允许在其中一方的@relation属性里指定fields和references参数,不能两边都添加。
你的需求是建立可选的双向一对一关系(Ingreso可关联一个Egreso,Egreso也可关联一个Ingreso,双方关联均允许为NULL),正确的模型配置如下:
model Ingreso { id Int @id @default(autoincrement()) idEgreso Int? @unique @map("id_egreso") egreso Egreso? @relation("IngresoEgresoLink", fields: [idEgreso], references: [id]) @@map("ingresos") } model Egreso { id Int @id @default(autoincrement()) idIngreso Int? @unique @map("id_ingreso") ingreso Ingreso? @relation("IngresoEgresoLink") @@map("egresos") }
关键说明:
- 给关系指定明确的名称(比如
IngresoEgresoLink),确保Prisma识别这是同一个双向关系,而非两个独立的单向关系。 - 仅在其中一个模型的关系字段(示例中为
Ingreso里的egreso)中定义fields和references,用来关联外键字段与对方模型的主键。 - 另一方的关系字段只需通过关系名称关联即可,无需重复指定
fields和references。
配置完成后,两个模型就能建立你需要的可选双向一对一关联,同时避免语法错误。
内容的提问来源于stack exchange,提问作者Jose Carlos Gutiérrez
相关产品推荐
相关产品推荐

