Как создать отношение «многие ко многим»?

#reactjs #apollo-client #apollo-server #prisma #prisma-graphql

Вопрос:

У меня есть 2 таблицы в моей базе данных:

 college_db=# TABLE "Movie";
 id | tmdb_id | poster_path | original_title
---- --------- ------------- ----------------
(0 rows)

college_db=# TABLE "User";
 id |        email        |     name      |                           password
---- --------------------- --------------- --------------------------------------------------------------
  1 | peter@**.nl | Peter **| $2b$04$Dqo4LN3S5ZOnk1T1MyatOuijbvHpl281oDChHdEu1ZfEOyk7mjLqu
(2 rows)
 

Я хочу создать отношения «многие ко многим», используя Apollo и Prisma. В настоящее время у меня есть мутация, которая добавляет фильм в таблицу фильмов:

 // apollo client

const AddMovie = gql`
  mutation addMovie(
    $original_title: String!,
    $tmdb_id: Int!,
    $poster_path: String!
  ) {
      addMovie(
      original_title: $original_title,
      tmdb_id: $tmdb_id,
      poster_path: $poster_path
      ) {
        original_title
      }
    }
`;
 
 // apollo server

addMovie: (parent, args) => {
  return prisma.movie.create({
    data: {
      original_title: args.original_title,
      tmdb_id: args.tmdb_id,
      poster_path: args.poster_path,
    },
  });
},
 

У пользователя может быть много фильмов, и у фильма может быть много пользователей.

Комментарии:

1. Для отношений «многие ко многим» вам нужны 3 таблицы. В третьем будут храниться отношения (он называется сводной таблицей/таблицей ссылок/ассоциативной таблицей). Таким образом, вы сохраните в нем идентификатор пользователя и идентификатор фильма