通过关联 table 与 Prisma 查询多对多关系
Querying many-to-many relations via associative table with Prisma
我是 Prisma 的新手,虽然到目前为止上手非常容易,但我 运行 遇到了一个我似乎找不到好的答案的问题。我已经通读了 docs about relation queries,但据我了解,Prisma 不支持通过流利 api 实现多对多。每个查询都必须 return 一个实体,然后您可以添加相关的 table,但在我的例子中,我的查询将 return 许多我想加入的实体。
这是我的架构的一个简单示例:
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 的新手,虽然到目前为止上手非常容易,但我 运行 遇到了一个我似乎找不到好的答案的问题。我已经通读了 docs about relation queries,但据我了解,Prisma 不支持通过流利 api 实现多对多。每个查询都必须 return 一个实体,然后您可以添加相关的 table,但在我的例子中,我的查询将 return 许多我想加入的实体。
这是我的架构的一个简单示例:
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;