在我的示例中,我有一个将奖金加入赌场的架构。查询对数据很有效,但我无法通过查询本身进行过滤。我使用的where子句看起来是正确的,但我得到一个错误,声明Object literal只能指定已知属性,并且“nodeposit”不存在于类型中。但我可以查询该数据。
const data = await prisma.casino_p_casinos.findMany({
where: {
approved: 1,
rogue: 0,
bonuses: {
nodeposit: { gt : 0 },
}
},
select: {
id: true,
clean_name: true,
casino: true,
button: true,
bonuses: {
where: {
nodeposit: { gt: 0 },
},
},
},
take: 14,
});
如果我删除WHERE子句中的奖金pard,查询将按预期工作,但我希望获取每个赌场的所有奖金,但前提是奖金包含nodeposit值。
这就是我要用的。
const data = await prisma.casino_p_casinos.findMany({
where: {
approved: 1,
rogue: 0,
bonuses: {
nodeposit: { gt : 0 },
},
},
select: {
id: true,
clean_name: true,
casino: true,
button: true,
bonuses: true,
},
take: 14,
});
计划:
model casino_p_casinos {
id Int @id @default(autoincrement())
casino String?
type String?
url String?
bonuses casino_p_bonus[]
model casino_p_bonus {
id Int @id @default(autoincrement())
parent Int
game String?
freespins Int?
freeplay String?
nodeposit Int?
deposit Int?
casino_p_casinos casino_p_casinos @relation(fields: [parent], references: [id])
}
1条答案
按热度按时间6g8kf2rb1#
您有一个一对多关系,因此当您添加where子句时,您就多了一个具有
some
、every
或none
的层,如此查询将过滤
casinos
,其中一些nodeposit
大于0,并返回所有奖金,甚至那些等于0的奖金。然后,如果您只希望
bonuses
和nodeposit
在赌场中大于0,您应该这样做: