【问题标题】:How can I delete items with relations?如何删除具有关系的项目?
【发布时间】:2020-02-07 21:12:59
【问题描述】:

我使用的是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 的关系。 团队成员是一对一的关系。

我想删除一个团队。

我试过了。

t.list.field("deleteTeam", {
  type: "Team",
  args: {
    teamid: idArg()
  },
  resolve: (_, { teamid }, ctx) => {
    return ctx.photon.teams.deleteMany({
      where: { id: teamid }
    });
  }
});

但它不起作用,因为它违反了关系。

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

【问题讨论】:

    标签: graphql photon prisma prisma-graphql nexus-prisma


    【解决方案1】:

    具有依赖关系的删除通常需要指定级联删除。

    根据您的模型,我相信您需要更新您的 graphql 模式以处理 CASCADE 上的 SET_NULL 关系 onDelete

    我知道在像8base 这样的其他系统中,可以指定一个force: Boolean 标志来解决这个问题。但是,这里是您的问题的 Prisma 文档部分:https://prisma-docs.netlify.com/docs/1.4/reference/prisma-api/concepts-utee3eiquo/#cascading-deletes

    【讨论】:

    猜你喜欢
    • 2010-12-26
    • 1970-01-01
    • 2018-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-12
    • 1970-01-01
    相关资源
    最近更新 更多