Skip to main content

Prisma Relations

One-to-Many

model User {
id String @id @default(cuid())
posts Post[]
}

model Post {
id String @id @default(cuid())
authorId String
author User @relation(fields: [authorId], references: [id], onDelete: Cascade)
}

Many-to-Many (implicit)

model Post {
id String @id @default(cuid())
tags Tag[]
}

model Tag {
id String @id @default(cuid())
posts Post[]
}
// Prisma auto-creates the junction table

Many-to-Many (explicit — when you need extra fields)

model User  { id String @id; follows Following[] @relation("follower"); followers Following[] @relation("following") }
model Following {
followerId String; follower User @relation("follower", fields: [followerId], references: [id])
followingId String; following User @relation("following", fields: [followingId], references: [id])
createdAt DateTime @default(now())
@@id([followerId, followingId])
}