gpt4 book ai didi

prisma - 使用 Prisma 通过关联表查询多对多关系

转载 作者:行者123 更新时间:2023-12-04 08:21:50 27 4
gpt4 key购买 nike

我是 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com