model member {
name String @id @db.VarChar(20) @unique
email String @db.VarChar(50)
intraId String @db.VarChar(20) @unique
avatar String
status Int
win Int @default(0)
lose Int @default(0)
level Int @default(0)
score Int @default(0)
achieve Int @default(0)
friend member[] @relation("friend", map: "friend_member")
blackList member[] @relation("blackList", map: "blackList_member")
game game[]
twoFactor Boolean @default(false)
tfaCode String? @db.VarChar(512)
tfaTime DateTime?
friendOf member[] @relation("friend")
blackListOf member[] @relation("blackList")
}
RELATION
처음 friend 컬럼만 사용하였을 때는 @relation 데코레이터 만으로 사용이 가능하였으나, blackList 컬럼을 추가하자 아래와 같은 에러가 발생하였다.
Error code: P1012 error: Error parsing attribute "@relation": The given constraint name member__fkey has to be unique in the following namespace: on model member for primary key, indexes, unique constraints and foreign keys. Please provide a different name using the map argument.
같은 테이블을 참조하는 Many-to-Many 관계가 2개이상일 시 map
인자를 통해 매핑 테이블의 이름을 지정해 주어야 해당 에러를 없앨 수 있다.
또한, 역관계를 지정해주지 않았다는 에러도 동시에 발생하여 아래 ‘friendOf
’ 및 ‘blackListOf
’와 같은 역관계도 지정해주었다.