有两个表sim_card和观察1到1。必须选择状态为活动(真)且未在观察表中使用的所有SIM卡。(也就是说,创建一个观察卡,并向它发出一个免费和活动的SIM卡。)
model observation {
id Int @id @unique @default(autoincrement()) @map("observation_id")
number Int
contract String?
sim_card sim_card? @relation(fields: [sim_cardId], references: [id], map: "ObservationId_sim_card_key")
sim_cardId Int? @unique(map: "ObservationId_sim_card_key")
firmId Int? @unique(map: "Observation_firmId_key")
client client? @relation(fields: [firmId], references: [id], map: "Observation_firmId_key")
}
model sim_card {
id Int @id @default(autoincrement())
number String @unique(map: "Sim_card_number_key")
operator String @default("kyivstar")
active Boolean @default(true)
busy Boolean @default(false)
observationId Int?
}就像我想象的那样,(但它不起作用)
findActive(): Promise<CreateSimCardDto[]> {
return Promise
.resolve(this.prismaService.sim_card
.findMany({
where: {
active: true
},
include: {
observation: {
select: {
sim_card: false
}
}
}
}))
.catch((error) => {
throw new HttpException(error.message, HttpStatus.BAD_REQUEST);
})
}发布于 2022-09-07 21:10:08
如果您想选择任何不在观察表中的SIM卡,为什么不搜索没有observationId的SIM卡呢?
this.prismaService.sim_card.findMany({
where: {
active: true,
observationId: { equals: null }
},
}))如果给定的observationId行未连接到任何observation行,则sim_card将为observation。如果我没有正确地理解您,请告诉我,但是在最后,如果您试图豁免行,则需要将其添加到您的where过滤器中。只有在完成初始筛选之后才使用select和include -- select和include只是确定返回已过滤行上的哪些字段。
https://stackoverflow.com/questions/73637560
复制相似问题