使用1-1和1-n关系的棱镜,具有相同的模型



在这种情况下,产品有许多图像,还有一个主图像。

但当我运行prisma format时,抛出错误:

error: Error validating field `image` in model `Product`: The relation field `image` on Model `Product` is missing an opposite relation field on the model `ProductImage`. Either run `prisma format` or add it manually.

我的schema.prisma:

model ProductImage {
id         String   @id @default(uuid()) @db.VarChar(36)
product_id String
product    Product  @relation(fields: [product_id], references: [id])
src        String   @db.VarChar(255)
created_at DateTime @default(now())
updated_at DateTime @default(now()) @updatedAt
@@map("product_image")
}
model Product {
id         String         @id @default(uuid()) @db.VarChar(36)
image_id   String
image      ProductImage   @relation(name: "main_image", fields: [image_id], references: [id])
images     ProductImage[]
slug       String         @unique(map: "slug") @db.VarChar(255)
title      String         @db.VarChar(255)
created_at DateTime       @default(now())
updated_at DateTime       @default(now()) @updatedAt
@@map("product")
}

这个模型应该解决这个问题:

model Product {
id         String         @id @default(uuid()) @db.VarChar(36)
image_id   String         @unique
// image   ProductImage   @relation(name: "main_image", fields: [image_id], references: [id])
image      ProductImage   @relation(name: "main_image", fields: [image_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
images     ProductImage[]
slug       String         @unique(map: "slug") @db.VarChar(255)
title      String         @db.VarChar(255)
created_at DateTime       @default(now())
updated_at DateTime       @default(now()) @updatedAt
@@map("product")
}
model ProductImage {
id                 String    @id @default(uuid()) @db.VarChar(36)
src                String    @db.VarChar(255)
created_at         DateTime  @default(now())
updated_at         DateTime  @default(now()) @updatedAt
product_id         String
product            Product   @relation(fields: [product_id], references: [id])
product_main_image Product[] @relation("main_image")
@@map("product_image")
}

这些对prisma模式中关系的引用应该是有帮助的。

最新更新