Prisma2: как разработать схему, которая имеет отношение к модели типа массива?

Я столкнулся с некоторыми проблемами при разработке схемы.

Случай 1:

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

model Package {
  user User[]
}

на один пакет могут подписаться сотни пользователей. Так что я думаю, что это правильный путь. Но проблема в том, что когда нужно удалить пакет, необходимо также удалить пользователя (admin). чего мы не хотим

случай 2:

model User {
  package Package[]
}

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

при таком проектировании при удалении пакета пользователь не удаляется. но я не могу подключить к пакету несколько пользователей.

1 ответ

Решение

Я думаю, что вам нужно явно смоделировать отношения с обеих сторон, чтобы получить отношение " многие ко многим". В конце концов, пользователи могут подписаться на множество пакетов, а на пакеты может быть подписано много пользователей.

model User {
  id Int @id @default(autoincrement())
  packages Package[] @relation(references: [id])
}

model Package {
  id Int @id @default(autoincrement())
  user User[] @relation(references: [id])
}
Другие вопросы по тегам