[Prisma] Relation / Enum

Lenny·2022년 9월 4일
0
post-custom-banner
model User {
  id              Int         @id @default(autoincrement())
  phone           String?     @unique
  email           String?     @unique
  name            String
  avatar          String?
  createdAt       DateTime    @default(now())
  updatedAt       DateTime    @updatedAt
  tokens          Token[]
  products        Product[]
  Fav             Fav[]
  Post            Post[]
  answers         Answer[]
  wonderings      Wondering[]
  writtenReviews  Review[]    @relation(name: "writtenReviews")
  receivedReviews Review[]    @relation(name: "receivedReviews")
  sales           Sale[]
  purchases       Purchase[]
}
model Fav {
  id        Int      @id @default(autoincrement())
  user      User     @relation(fields: [userId], references: [id], onDelete: Cascade)
  product   Product  @relation(fields: [productId], references: [id], onDelete: Cascade)
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt
  userId    Int
  productId Int
}

@relation 인자

name: 관계를 명확하게 하기 위해 관계의 이름을 정의합니다.
@relation(name: "UserOnPost", references: [id])
또는 @relation("UserOnPost")

fields: 현재 모델의 필드 목록
references: 관계의 반대편에 있는 모델의 필드 목록
https://www.prisma.io/docs/reference/api-reference/prisma-schema-reference#relation

Disambiguating relations (명확한 관계)
두 개의 동일한 모델 간에 두 개의 관계를 정의할 때 @relation 속성에 name 인수를 추가하여 모호성을 제거해야 합니다.
https://www.prisma.io/docs/concepts/components/prisma-schema/relations#the-relation-attribute

enum
enum은 기본적으로 PostgreSQL 및 MySQL에서 지원됩니다.

// 두 가지 가능한 값으로 enum을 지정하고 기본값을 설정합니다.
enum Role {
USER
ADMIN
}

model User {
id Int @id @default(autoincrement())
role Role @default(USER)
}
profile
🧑‍💻
post-custom-banner

0개의 댓글