我是 Prisma 的新手,虽然到目前为止它非常容易上手,但我遇到了一个我似乎无法找到好的答案的问题。我已经阅读了 docs about relation queries ,但据我了解,Prisma 不支持通过流利的 api 实现多对多。每个查询都必须返回一个实体,然后您可以添加相关表,但在我的例子中,我的查询将返回许多实体,然后我想加入这些实体。
这是我的架构的一个简单示例:
model User {
id String @id @default(uuid())
}
model Workspace {
id String @id @default(uuid())
}
model WorkspaceUser {
workspace Workspace @relation(fields: [workspaceId], references: [id])
workspaceId String
user User @relation(fields: [userId], references: [id])
userId String
}
我希望做这样的事情:
await prisma.workspaceUser.findMany({
where: { userId: "123" },
}).workspaces();
另外,我注意到 intellisense 显示有一个 .join() 方法,但文档中没有提到它。
Prisma 是否提供解决此问题的方法,还是我应该使用 $queryRaw
?
最佳答案
您可以对单个选择使用相同的语法
await prisma.workspaceUser.findUnique({
where: { userId: "123" },
}).workspace();
对于许多选择,它将作为数组返回,但如果您指定 include
const allRecords = await prisma.workspaceUser.findMany({
where: { userId: "123" },
include: {workspace: true},
});
然后你可以做类似allRecords[i].workspace;
关于prisma - 使用 Prisma 通过关联表查询多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65459703/