model User { id Int @id @default(autoincrement()) name String post Post[] likes Like[]}model Post { id Int @id @default(autoincrement()) content String User User? @relation(fields: [userId], references: [id]) userId Int? likes Like[]}model Like { postId Int userId Int User User @relation(fields: [userId], references: [id]) Post Post @relation(fields: [postId], references: [id]) @@id([postId, userId])}
model User { id Int @id @default(autoincrement()) name String post Post[] likes Like[]}model Post { id Int @id @default(autoincrement()) content String User User? @relation(fields: [userId], references: [id]) userId Int? likes Like[]}model Like { postId Int userId Int User User @relation(fields: [userId], references: [id]) Post Post @relation(fields: [postId], references: [id]) @@id([postId, userId])}
Say we wanted to add a 4th table that looks like this:
model Review { id String @id @default(uuid()) status ReviewStatus @default(PENDING) // Reference to user table userId String? reviewedBy User? @relation(fields: [userId], references: [id]) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // Reference to post table postId Int? @unique post Post? @relation(fields: [postId], references: [id], onDelete: Cascade) // Reference to like table likeId Int? @unique like Like? @relation(fields: [likeId], references: [postId, userId], onDelete: Cascade)}
model Review { id String @id @default(uuid()) status ReviewStatus @default(PENDING) // Reference to user table userId String? reviewedBy User? @relation(fields: [userId], references: [id]) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // Reference to post table postId Int? @unique post Post? @relation(fields: [postId], references: [id], onDelete: Cascade) // Reference to like table likeId Int? @unique like Like? @relation(fields: [likeId], references: [postId, userId], onDelete: Cascade)}
I cannot figure out how to set up
like Like? @relation(fields: [likeId], references: [postId, userId], onDelete: Cascade)
like Like? @relation(fields: [likeId], references: [postId, userId], onDelete: Cascade)
since the primary key on the
Like
Like
table is an implicit compound id. I cannot map two foreign columns to one column either.