【问题标题】:Querying many-to-many relations via associative table with Prisma使用 Prisma 通过关联表查询多对多关系
【发布时间】:2021-04-04 04:01:33
【问题描述】:

我是 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();

另外,我注意到智能感知显示有一个 .join() 方法,但文档中没有提到它。

Prisma 是否提供解决此问题的方法,还是我应该使用 $queryRaw

【问题讨论】:

    标签: prisma


    【解决方案1】:

    您可以将确切的语法用于单选,也就是

    await prisma.workspaceUser.findUnique({
      where: { userId: "123" },
    }).workspace();
    

    对于许多选择,它将作为数组返回,但如果您指定include,则仍应具有相关实体

    const allRecords = await prisma.workspaceUser.findMany({
      where: { userId: "123" },
      include: {workspace: true},
    });
    

    然后你可以做类似allRecords[i].workspace;

    【讨论】:

      猜你喜欢
      • 2021-10-03
      • 1970-01-01
      • 2011-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-08
      • 2021-07-23
      • 1970-01-01
      相关资源
      最近更新 更多