【问题标题】:Query using query builder to make an inner join and select with condition in typeORM使用查询生成器进行查询以进行内部联接并在 typeORM 中使用条件进行选择
【发布时间】:2021-12-10 15:17:58
【问题描述】:

我是查询生成器的新手。我需要应用查询。我在mysql上做了它,它工作正常。但我无法在查询中设置 where 条件。

这是我的 SQL 查询:

select users_roles.user_id 
from users_roles 
inner join roles on roles.id = users_roles.role_id  
where roles.role = 'ADMIN_ROLE' 
   or roles.role = 'SUPER_ADMIN_ROLE'

我尝试使用查询生成器执行此操作,但没有使用任何 where 条件。如何根据该 mysql 代码进行过滤?在这里,我添加了我的查询生成器查询:

const query = this.userRoleRepository.createQueryBuilder('usersRoles');

      const users = await query
        .innerJoinAndSelect('usersRoles.user', 'user')
        .getMany();

实际上它返回的是整个用户列表。但我只需要指定两种类型的用户。那应该用 where 条件过滤。这是在mysql查询中。

【问题讨论】:

  • 既然你有实际的查询,只需use它。

标签: postgresql nestjs typeorm query-builder


【解决方案1】:
const users = await query
    .select(userRoles.user_id)
    .innerJoin('userRoles.roles', 'roles', 'roles.id = users_roles.role_id')
    .where("roles.role = :adminRole OR roles.role =: superRole", { adminRole: 'ADMIN_ROLE', superRole: 'SUPER_ADMIN_ROLE' })
    .getMany();

我希望这行得通。

【讨论】:

    猜你喜欢
    • 2014-12-16
    • 1970-01-01
    • 2020-06-13
    • 2011-08-17
    • 2012-05-06
    • 2016-11-16
    • 2022-12-08
    • 2012-12-07
    • 2013-01-07
    相关资源
    最近更新 更多