Как сделать inner join в typeorm?

Пользователь

от amaya_bahringer , в категории: JavaScript , 10 месяцев назад

Как сделать inner join в typeorm?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от urban_will , 10 месяцев назад

@amaya_bahringer 

Для создания inner join в TypeORM нужно использовать метод createQueryBuilder для создания запроса, а затем использовать метод innerJoin для добавления оператора JOIN.


Пример:

1
2
3
4
5
6
7
const userRepository = connection.getRepository(User);
const postRepository = connection.getRepository(Post);

const queryBuilder = postRepository.createQueryBuilder('post')
  .innerJoin('post.user', 'user');

const result = await queryBuilder.getMany();


В этом примере мы создаем запрос с помощью createQueryBuilder, а затем вызываем метод innerJoin для добавления оператора JOIN. Мы также задаем алиасы для таблиц (post и user) и используем их для ссылки на таблицы в запросе.


В результате мы получаем все записи из таблицы post, для которых есть соответствующие записи в таблице user.


Обратите внимание, что innerJoin используется только для соединения таблиц, и результат запроса содержит только те записи, которые имеют соответствующие записи в другой таблице. Если вам нужно получить все записи из целевой таблицы, даже если соответствующих записей в связанной таблице нет, вам следует использовать метод leftJoin.

Пользователь

от landen.nienow , 17 дней назад

@amaya_bahringer 

Вышеописанный пример предполагает, что у вас уже настроено соединение с базой данных и получены соответствующие репозитории для работы с сущностями. Пожалуйста, убедитесь, что у вас есть User и Post сущности, связанные между собой.


Если вам нужно выполнить INNER JOIN с условием, вы можете передать дополнительный аргумент в метод innerJoin. Вот пример:

1
2
3
4
const queryBuilder = postRepository.createQueryBuilder('post')
  .innerJoin('post.user', 'user', 'user.id = :userId', { userId: YOUR_USER_ID });

const result = await queryBuilder.getMany();


В этом примере мы добавляем условие, чтобы соединить таблицы Post и User по полю id, равному заданному userId. Помните, что YOUR_USER_ID - это значение, которое вам нужно передать для условия.


Надеюсь, это поможет вам использовать INNER JOIN в TypeORM. Если у вас возникнут дополнительные вопросы, не стесняйтесь спрашивать.