Tengo un modelo de usuario y quiero agregar un sistema de seguimiento/seguidores, y para eso creo que necesito crear una tabla separada que se vea así
id | user_id | follower_id 1 | 20 | 45 2 | 20 | 53 3 | 32 | 20pero no tengo idea de cómo crear el esquema para eso, lo que he hecho es esto:
model User { id Int @id @default(autoincrement()) username String Follows Follows[] } model Follows { id Int @id @default(autoincrement()) following_id Int? follower_id Int? user_Following User @relation(fields: [following_id], references: [id]) user_Follower User @relation(fields: [follower_id], references: [id]) }pero eso por supuesto no funciona y me esta dando error
Esta es la forma en que sugeriría modelar su esquema.
model User { id String @id @default(autoincrement()) username String followers Follows[] @relation("following") following Follows[] @relation("follower") } model Follows { follower User @relation("follower", fields: [followerId], references: [id]) followerId String following User @relation("following", fields: [followingId], references: [id]) followingId String @@id([followerId, followingId]) }Cambios
followerId y followingId se hacen obligatorios. Realmente no tiene sentido tener una Follows de relación de seguimiento cuando ninguno de los dos está ausente. (No puede tener una relación de seguimiento sin un usuario siguiendo y un usuario a seguir).@@id([followerId, followingId]) Follows la clave principal en la tabla de seguimiento. Un campo de id separado es redundante.4 es opcional, por supuesto, pero sugeriría seguirlo de todos modos.
Puede encontrar más detalles sobre esto en la subsección de muchos a muchos del artículo de autorreacción en el documento de Prisma.