初始化

配置连接

Seed 脚本

为你的数据库播种
NextJS项目中需要配置编译选项:

"prisma": {
	"seed": "ts-node --compiler-options {\"module\":\"CommonJS\"} prisma/seed.ts"
},

命令

prisma db push

用于在开发时进行快速迁移,不会生成迁移文件、速度快

prisma migrate

多人协作开发
生产环境

prisma migrate dev

  • --create-only: 创建一个新的迁移文件但不应用它
  • prisma migrate dev: 应用迁移文件
npx prisma migrate dev --name init

prisma generate

当修改了 schema 定义并且 migrate dev 应用之后,代码中的 TS 类型还是报错,需要使用 npx prisma generate 重新生成 Prisma Client 以确保生成最新的类型定义

prisma migrate reset

prisma migrate xx

Schema

@relation

@relation 在 Prisma 中表示 主键/外键 的映射关系

model Product {
  id           Int              @id @default(autoincrement())
  name         String
  url          String
  sku          Json
  price        Float
  description  String?
  images       Json?
  detailImages Json?            @map("detail_images")
  attributes   Json?
  createdAt    DateTime         @default(now()) @map("created_at")
  categories   ProductCategory[]
}
 
model Category {
  id        Int                @id @default(autoincrement())
  name      String
  products  ProductCategory[]
}
 
model ProductCategory {
  productId  Int
  categoryId Int
  product    Product  @relation(fields: [productId], references: [id], onDelete: Cascade, name: "ProductToCategory")
  category   Category @relation(fields: [categoryId], references: [id], onDelete: Cascade, name: "ProductToCategory")
 
  @@id([productId, categoryId])
  @@map("product_category")
}
  • Product 模型
    • id, name, url, sku, price, description, images, detailImages, attributes, createdAt: 各种字段。
    • categories: 一个数组,表示与 ProductCategory 的关系。
  • Category 模型
    • id, name: 各种字段。
    • products: 一个数组,表示与 ProductCategory 的关系。
  • ProductCategory 模型
    • productId, categoryId: 外键字段。
    • product: 关联到 Product 模型的关系,指定了外键字段 productId 和引用的字段 id,以及删除行为和关系名称。
    • category: 关联到 Category 模型的关系,指定了外键字段 categoryId 和引用的字段 id,以及删除行为和关系名称。
    • @@id([productId, categoryId]): 复合主键,由 productId 和 categoryId 组成。
    • @@map(“product_category”): 映射数据库表名为 product_category。