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

标签 prisma

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

相关文章:

prisma - 您如何使用 Prisma 过滤没有相关记录的记录?

javascript - Prisma Connection WhereInput 用于枚举值数组?

prisma - 使用 connect 相对于直接更新外键的优势

docker - Prisma 在运行 Prisma init 时不生成文件

mongodb - [下一个验证][错误][adapter_error_getUserByAccount];无法读取未定义的属性(读取 'findUnique' )

next.js - 对象字面量只能指定已知属性,并且 'x' 不存在于类型 (prisma) 中

reactjs - WebSocket 连接到 'ws:<URL>/_next/webpack-hmr' 失败 : WebSocket is closed before the connection is established

docker-compose - 如何使用prisma避免java.util.concurrent.ThreadPoolExecutor错误

postgresql - 使用 Prisma 的嵌套创建查询返回未定义

graphql - 我应该一遍又一遍地重新输入我的字段,还是我认为这是错误的?