Как мне написать этот запрос, используя TypeORM QueryBuilder? - PullRequest
0 голосов
/ 13 января 2019

Я запустил этот код непосредственно на сервере MySQL, и я получаю желаемые результаты. Теперь, как мне воспроизвести это в моем коде, используя typeORM queryBuilder?

SELECT user.id, user.email, user.image, user.phone_number, 
user.merchantLocationId, ugg.userGroupsId AS groupId, ug.description AS 
groupName, ur.id as roleId, ur.description AS role_name, ugr.priviledges
FROM ipay.user, ipay.user_user_group_user_groups AS ugg, 
ipay.user_group_roles AS ugr, ipay.user_groups AS ug, 
ipay.user_roles AS ur
WHERE user.id = ugg.userId AND ugg.userGroupsId = ugr.group_id AND 
ugr.role_id = ur.id AND user.email = "press@xyz.com";

1 Ответ

0 голосов
/ 15 января 2019

Немного сложно перевести такой запрос в typeorm. Самый близкий пример, который я мог бы привести, был бы что-то вроде этого

@Injectable()
export class UserService {
  constructor(@InjectRepository(User) private readonly userRepository: Repository<User>) {}

  async findUserByEmail(email: string): Promise<User | null> {
    return await this.userRepository({
      relations: ['roles', 'groups'],
      where: {
        email,
      },
    });
  }
}

Где ваша UserEntity выглядит так

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

  @Column({
    unique: true,
  })
  email: string;

  @ManyToMany(type => Group, group => group.users)
  groups: Group[];

  @ManyToOne(type => Role, role => role.users)
  role: Role;
}

Это не точное совпадение, но, надеюсь, даст вам некоторое представление о том, как вы можете выполнить свой запрос.

...