database - GraphQL Prisma 数据库,允许两个表与一个表有关系
问题描述
我正在寻找将两个不同的表连接到一个表的关系表。
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 的安排,用户可以拥有出租的房产和/或从其他人那里租用房产。我认为你应该在你的用户类型中指定两个不同的项目来区分这些,然后对这些有关系。像这样的东西:
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 设置,这样如果用户被删除,他的任何预订或让也会被删除。这将是一个典型的模式,但取决于您。
推荐阅读
- javascript - 错误:您可能需要适当的加载器来处理此文件类型 - Fusion Js,使用图标
- javascript - 是否有实现带有 2 个国家标志和一些文本的 Card 我正在使用带有 expo 的 react-native-element 库
- wso2 - Data Mapper Mediator 和 Payload Factory Mediator 的区别
- docusignapi - 将标头从 Docusign Connect 传递到 webhook
- r - 将 x 轴与 grid.arrange 对齐
- sql - 从 col2 为 NULL 的 col 中选择 group by
- xcode - React Native:将项目升级到 0.58.0 后 iOS 构建崩溃
- r - 在保持形状覆盖的同时将图例分成两列
- ios - 键盘有时会显示在 iOS 的文本字段选择器视图中
- python - python if-else递归函数返回不需要的值