Как выбрать строку по соотношению «многие ко многим»?

#mysql #node.js #typeorm #node.js-typeorm

Вопрос:

Вот мои сущности типа orm:

 @Entity()
export class Conversation {
  @PrimaryGeneratedColumn()
  id: number;

  @ManyToMany((type) => User, (user) => user.conversations)
  attendees: User[];
}
 
 @Entity()
export class User {
  @PrimaryGeneratedColumn()
  id: number;

  @ManyToMany((type) => Conversation, (conversation) => conversation.attendees)
  @JoinTable()
  conversations: Conversation[];
}
 

Имея два разных идентификатора пользователя, я хочу выбрать один объект беседы, который содержит обоих этих пользователей как attendees .
Что мне удалось получить до сих пор, так это разговоры одного пользователя:

 const conversationsUsers = await conversationRepository
  .createQueryBuilder("c")
  .innerJoinAndSelect("c.attendees", "user", "user.id = :authorId", { authorId })
  .getMany();
 

Будучи далек от того, чтобы стать экспертом по SQL, я думаю, что мне следует создать еще JOIN одну таблицу с users таблицей (с псевдонимом, например user.id ,=>> attende_id , но понятия не имею, как к этому подойти.

Заранее спасибо за любые мысли 🙂

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

1. если у вас есть отношение «многие ко многим», вам следует добавить 3-ю таблицу-если вы немного погуглите, вы должны найти некоторые подсказки,

2. Я думаю type-orm , что это помогло мне разобраться в этом — он создал такие таблицы, как user conversation и user_conversations_conversation . Вы предлагаете, чтобы лучший подход в любом случае состоял в том, чтобы создать его вручную?