Prisma一对一关系问题

Prisma One-to-one relation issue

我最近才开始使用 prisma,我 运行 遇到了关系问题。我有一个用户模型和一个地址模型。

model User {
    id         Int      @id @unique @default(autoincrement())
    username   String
}

model Address {
    id         Int      @id @unique @default(autoincrement())
    street     String
}

我需要给用户添加2个地址:发票地址和送货地址。在地址中我不需要用户参考。

我认为通过将此添加到用户模型可以毫无问题地工作:

  invoiceAddress   Address? @relation(name: "iAddress", fields: [iAddressId], references: [id])
  deliveryAddress   Address? @relation(name: "dAddress", fields: [dAddressId], references: [id])
  iAddressId Int?
  dAddressId Int?

但是在保存模式时,两个用户字段被添加到地址模型中......我不需要,现在我遇到了问题,因为它们引用相同的用户模型,所以我还必须命名它们并添加标量领域...

我是不是漏掉了什么???这应该是一个基本用例 imo。

这是Prisma端的要求,关系字段应该存在于模型的两侧,不能只在一个模型上定义关系字段。

以下模式模型应该可以为您解决问题:

model User {
  id              Int      @id @unique @default(autoincrement())
  username        String
  invoiceAddress  Address? @relation(name: "iAddress", fields: [iAddressId], references: [id])
  deliveryAddress Address? @relation(name: "dAddress", fields: [dAddressId], references: [id])
  iAddressId      Int?
  dAddressId      Int?
}

model Address {
  id           Int    @id @unique @default(autoincrement())
  street       String
  UserInvoice  User[] @relation(name: "iAddress")
  UserDelivery User[] @relation(name: "dAddress")
}

请注意,数据库中不存在关系字段,因此地址 table 中不存在 UserInvoiceUserDelivery 列。同样,invoiceAddressdeliveryAddress 列将不存在于用户 table.