lar*_*nel 4 typescript nestjs prisma
我在使用 prisma 编写查询时遇到问题,该查询包含模型关系键上的过滤器。
model Car {
id Int @id @default(autoincrement())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
plate String @unique
place String
bookings Booking[]
@@map("cars")
}
Run Code Online (Sandbox Code Playgroud)
我的预订模型如下:
model Booking{
id Int @id @default(autoincrement())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
place String
startDate DateTime
endDate DateTime
carId Int
car Car @relation(fields: [carId], references: [id])
@@map("bookings")
}
Run Code Online (Sandbox Code Playgroud)
我无法表达返回每辆车的查询,这些车辆在其预订关系/密钥中遵守 startDate 和 endDate 的给定标准。我将不胜感激任何想法或线索,提前谢谢你。
您可以查询预订并包含汽车:
prisma.booking.findMany({ where: { startDate, endDate }, include: { car: true }})
Run Code Online (Sandbox Code Playgroud)
然后您可以根据结果绘制汽车地图。但是,您可能会收到同一辆车的两次预订(如果数据中有的话)。
或者您可以对关系使用过滤器(https://www.prisma.io/docs/concepts/components/prisma-client/relation-queries#filter-on--to-many-relations):
prisma.car.findMany({ where: { bookings: { some: { startDate, endDate } } } });
Run Code Online (Sandbox Code Playgroud)
您还可以使用更复杂的查询,例如搜索在一段时间内预订的汽车:
prisma.car.findMany({
where: {
bookings: { some: { startDate: { gte: startDate }, endDate: { lte: endDate } } },
},
});
Run Code Online (Sandbox Code Playgroud)
(所有示例均假设 , 已startDate使用endDate正确的值进行初始化。)
| 归档时间: |
|
| 查看次数: |
2598 次 |
| 最近记录: |