Перейти к содержимому

5. Связи между моделями

Одна из сильнейших сторон Prisma — декларативное описание связей между моделями прямо в схеме. Prisma автоматически генерирует типы для всех связей и предоставляет удобный API для работы с ними.

Prisma поддерживает три вида отношений:

  • Один-к-одному (1:1) — каждая запись связана ровно с одной записью другой модели
  • Один-ко-многим (1:N) — одна запись связана со многими записями другой модели
  • Многие-ко-многим (N:M) — множество записей связано со множеством других записей

Атрибут @relation явно описывает связь. Он принимает поля fields (колонки-ключи в текущей таблице) и references (колонки, на которые они ссылаются):

model Post {
author User @relation(fields: [authorId], references: [id])
authorId Int
}

Prisma поддерживает два варианта связи многие-ко-многим:

  • Неявная — Prisma автоматически создаёт промежуточную таблицу
  • Явная — вы описываете промежуточную модель сами, что позволяет добавить к ней дополнительные поля

С помощью аргументов onDelete и onUpdate в @relation можно настроить каскадное поведение:

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