Graphql 如何删除具有关系的项目?

Graphql 如何删除具有关系的项目?,graphql,photon,prisma,prisma-graphql,nexus-prisma,Graphql,Photon,Prisma,Prisma Graphql,Nexus Prisma,我使用的是prisma2,我不知道如何删除与其他模型相关的项目 这是我的模型 model User { id String @default(cuid()) @id email String @unique password String name String teams Team[] memberships Membership[] } model Team { id String @default(cu

我使用的是prisma2,我不知道如何删除与其他模型相关的项目

这是我的模型

model User {
  id       String @default(cuid()) @id
  email    String @unique
  password String
  name     String

  teams       Team[]
  memberships Membership[]
}

model Team {
  id        String   @default(cuid()) @id

  name        String
  founder     User?
  memberships Membership[]
}

model Membership {
  id        String   @default(cuid()) @id

  class    String

  owner User
  team  Team
}
用户团队是1:n关系。 团队成员是1:n关系

我想删除一个团队

我试过这个

t.list.field("deleteTeam", {
  type: "Team",
  args: {
    teamid: idArg()
  },
  resolve: (_, { teamid }, ctx) => {
    return ctx.photon.teams.deleteMany({
      where: { id: teamid }
    });
  }
});
但它不起作用,因为它违反了关系


如何在同时断开所有关系的情况下删除团队?

具有从属关系的删除通常需要指定级联删除

基于您的模型,我相信您需要更新graphql模式,以便在关系的
onDelete
上处理
CASCADE


我知道在其他类似的系统中,可以指定一个
force:Boolean
标志来解决这个问题。不过,这里是Prisma文档部分,可以解答您的问题:

谢谢您的回答!我发现prisma2还不支持级联,尽管逐个删除效果很好。prisma2不支持onDelete。