CreateQueryBuilder с getOne не возвращает @JoinColumns внутри таблицы Typeorm

У меня есть проект, написанный с помощьюnesjs и typeorm. В моем проекте у меня есть таблицы чат и пользователь, поэтому я хочу получить отношения ManyToOne. Вот таблица chat

export class Chat extends BaseEntity {
@PrimaryGeneratedColumn()
id: number;

@ManyToOne(() => User, (user) => user.chatsCreater, { nullable: false })
@JoinColumn({ name: 'creatorId' })
creator: User;

@ManyToOne(() => User, (user) => user.chatsCompanion, { nullable: false })
@JoinColumn({ name: 'companionId' })
companion: User;
}

и кусок из user таблицы

...   
@OneToMany(() => Chat, (chat) => chat.creator)
chatsCreater: Chat[];

@OneToMany(() => Chat, (chat) => chat.companion)
chatsCompanion: Chat[];
...

Когда я запрашиваю данные из чата, я ожидаю получить таблицу отверстий {id, companionId, creatorI}, а не только значение chat.id. Вот мой запрос

.createQueryBuilder('chat')
.where('chat.creatorId = :creatorId AND chat.companionId = :companionId', { creatorId, companionId })
.getOne()

и результат {id: 1} Итак, я хочу получить значения товарища и создателя также, когда я запрашиваю из чата. Если я изменю getOne() на getRaw(), я получу желаемый результат. Но в случае более сложных запросов (с несколькими объединениями) с getRaw возникает беспорядок, поэтому есть ли способ получить все столбцы с помощью getOne?

Преобразование данных с помощью красноречивых аксессоров и мутаторов в Laravel
Преобразование данных с помощью красноречивых аксессоров и мутаторов в Laravel
Laravel поставляется с мощной функцией под названием "Eloquent Accessors and Mutators".
Отношения "многие ко многим" в Laravel с методами присоединения и отсоединения
Отношения "многие ко многим" в Laravel с методами присоединения и отсоединения
Отношения "многие ко многим" в Laravel могут быть немного сложными, но с помощью Eloquent ORM и его моделей мы можем сделать это с легкостью. В этой...
0
0
21
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Я смог сделать это с помощью leftJoinAndSelect

.createQueryBuilder('chat')
  .leftJoinAndSelect('chat.creator', 'creator')
  .leftJoinAndSelect('chat.companion', 'companion')
  .where('chat.creatorId = :creatorId AND chat.companionId = :companionId', { creatorId, companionId })
  .getOne();

В случае, если таблица отверстий не нужна, также можно использовать leftJoin без выбора и позже добавить в запрос addSelect(['creator.id','companion.id'])

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