深度删除二级关系数据
Deep delete second level relationships data
我有三个模型,它们通过关系联系在一起。
model Product {
id Int @id @default(autoincrement())
name String
type_id Int
type ProductType @relation(fields: [type_id], references: [id])
tickets Ticket[]
}
model ProductType {
id Int @id @default(autoincrement())
name String
asigned_products Product[]
}
model Ticket {
id Int @id @default(autoincrement())
title String
description String
priority TicketPriority
type TicketType
product_id Int
product Product @relation(fields: [product_id], references: [id])
files File[]
}
为了删除 ProductType,我需要删除引用它的产品,我需要再次删除引用这些产品的票证。
我知道可以通过这种方式删除产品,但是否可以更深入地删除票证?
await this.prismaService.productType.update({
where: { id },
data: { asigned_products: { deleteMany: {} } }
});
const deletedProductType = await this.prismaService.productType.delete({
where: { id }
});
可以用 prisma 做到这一点吗?
也许您正在寻找级联删除,在您的情况下是
model Ticket {
id Int @id @default(autoincrement())
title String
description String
priority TicketPriority
type TicketType
product_id Int
product Product @relation(fields: [product_id], references: [id], onDelete: Cascade)
files File[]
}
在这种情况下,将onDelete: Cascade
添加到Ticket
模型上的product
字段意味着删除Product
记录也会删除所有相关的Ticket
记录。
有关参考操作的 Prisma 文档:
https://www.prisma.io/docs/concepts/components/prisma-schema/relations/referential-actions
我有三个模型,它们通过关系联系在一起。
model Product {
id Int @id @default(autoincrement())
name String
type_id Int
type ProductType @relation(fields: [type_id], references: [id])
tickets Ticket[]
}
model ProductType {
id Int @id @default(autoincrement())
name String
asigned_products Product[]
}
model Ticket {
id Int @id @default(autoincrement())
title String
description String
priority TicketPriority
type TicketType
product_id Int
product Product @relation(fields: [product_id], references: [id])
files File[]
}
为了删除 ProductType,我需要删除引用它的产品,我需要再次删除引用这些产品的票证。
我知道可以通过这种方式删除产品,但是否可以更深入地删除票证?
await this.prismaService.productType.update({
where: { id },
data: { asigned_products: { deleteMany: {} } }
});
const deletedProductType = await this.prismaService.productType.delete({
where: { id }
});
可以用 prisma 做到这一点吗?
也许您正在寻找级联删除,在您的情况下是
model Ticket {
id Int @id @default(autoincrement())
title String
description String
priority TicketPriority
type TicketType
product_id Int
product Product @relation(fields: [product_id], references: [id], onDelete: Cascade)
files File[]
}
在这种情况下,将onDelete: Cascade
添加到Ticket
模型上的product
字段意味着删除Product
记录也会删除所有相关的Ticket
记录。
有关参考操作的 Prisma 文档:
https://www.prisma.io/docs/concepts/components/prisma-schema/relations/referential-actions