Я ищу реляционные таблицы, которые соединяют две разные таблицы с одной таблицей.
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» невозможно. Каков наилучший способ создать отношение, позволяющее это сделать?

У вас должно быть два разных типа бронирования. Я предполагаю, что это что-то вроде соглашения 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 для типа пользователя, чтобы при удалении пользователя все его бронирования или разрешения также удалялись. Это был бы типичный шаблон, но на ваше усмотрение.
вы предлагаете действительное решение. Я попробую реализовать это. Арендатор — это массив, потому что несколько человек будут арендовать одно и то же имущество с течением времени.