База данных GraphQL Prisma, которая позволяет двум таблицам иметь отношения к одной таблице

Я ищу реляционные таблицы, которые соединяют две разные таблицы с одной таблицей.

type User {
  booking: [Booking!]! @relation(name: "UserToBooking" onDelete: SET_NULL)
}

type Booking {
  owner: User! @relation(name: "UserToBooking", onDelete: SET_NULL)
  renter: [User!]! @relation(name: "UserToBooking", onDelete: SET_NULL)
}

Prisma допускает только одно отношение, поэтому наличие двух «UserToBooking» невозможно. Каков наилучший способ создать отношение, позволяющее это сделать?

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
0
0
239
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

У вас должно быть два разных типа бронирования. Я предполагаю, что это что-то вроде соглашения AirBnB, где пользователь может владеть недвижимостью, которая сдается в аренду, и/или также арендовать недвижимость у других. Я думаю, вы должны указать два разных элемента в своем типе пользователя, чтобы различать их, а затем установить для них отношение. Что-то вроде этого:

type User {
  booking: [Booking!]! @relation(name: "UserToBooking" onDelete: CASCADE)
  let: [Booking!]! @relation(name: "UserToLetBooking" onDelete: CASCADE)
}

type Booking {
  owner: User! @relation(name: "UserToLetBooking", onDelete: SET_NULL)
  renter: User! @relation(name: "UserToBooking", onDelete: SET_NULL)
}

Таким образом, бронирование показывает пользователя, который является сдающим в аренду, и пользователя, который является арендатором. Я также изменил арендатора в бронировании на одного пользователя, потому что я полагаю, что у каждого бронирования есть 1 сдающий в аренду владелец и 1 арендатор. Я также изменил параметр onDelete для типа пользователя, чтобы при удалении пользователя все его бронирования или разрешения также удалялись. Это был бы типичный шаблон, но на ваше усмотрение.

вы предлагаете действительное решение. Я попробую реализовать это. Арендатор — это массив, потому что несколько человек будут арендовать одно и то же имущество с течением времени.

Kevvv 27.05.2019 04:08

Другие вопросы по теме