允许两个 table 与一个 table 建立关系的 GraphQL Prisma 数据库

GraphQL Prisma database that allows two tables to have relations to one table

我正在寻找将两个不同的 table 连接到一个 table.

的关系 table
type User {
  booking: [Booking!]! @relation(name: "UserToBooking" onDelete: SET_NULL)
}

type Booking {
  owner: User! @relation(name: "UserToBooking", onDelete: SET_NULL)
  renter: [User!]! @relation(name: "UserToBooking", onDelete: SET_NULL)
}

Prisma 只允许一个相同的关系,所以有两个 "UserToBooking" 是不可能的。创建允许执行此操作的关系的最佳方法是什么?

您必须有两种不同的预订类型。我猜这有点像 AirBnB 安排,用户可以拥有 属性 出租的 and/or 也可以从其他人那里租用房产。我认为你应该在你的用户类型中指定两个不同的项目来区分它们,然后为它们建立关系。像这样:

type User {
  booking: [Booking!]! @relation(name: "UserToBooking" onDelete: CASCADE)
  let: [Booking!]! @relation(name: "UserToLetBooking" onDelete: CASCADE)
}

type Booking {
  owner: User! @relation(name: "UserToLetBooking", onDelete: SET_NULL)
  renter: User! @relation(name: "UserToBooking", onDelete: SET_NULL)
}

这样,预订会显示一个用户是出租所有者,一个用户是承租人。我还将预订中的承租人更改为单个用户,因为我认为每个预订都有 1 个出租业主和 1 个承租人。我还更改了用户类型的 onDelete 设置,这样如果用户被删除,他的任何预订或出租也将被删除。这将是一个典型的模式,但取决于您。