Как использовать несколько столбцов в инструкции whereIn? - PullRequest
0 голосов
/ 19 апреля 2020

У меня есть объект:

@Entity({
  name: 'test_table'
})
export class SomeEntity {
  @PrimaryGeneratedColumn({
    type: 'int4',
    name: 'id'
  })
  id: number;

  @Column({
    type: 'int2',
    name: 'some_column_1'
  })
  someColumn1: number;

  @Column({
    type: 'text',
    name: 'some_column_2'
  })
  someColumn2: string;
}

Теперь мне нужно создать этот запрос:

select id, some_column_1, some_column_2 from test_table where (some_column_1, some_column_2) in ( (1, 'test1'), (2, 'test2') )

Для этого запроса я пытаюсь:

//.......
.where("(some_column_1, some_column_2) IN (:...arr)", {
  arr: [
    [1, 'test1'],
    [2, 'test2']
  ]
})
.getMany();

И я получаю сообщение об ошибке: input of anonymous composite types is not implemented

Как создать этот запрос в typeorm?

База данных postgres

1 Ответ

0 голосов
/ 21 апреля 2020

Я не уверен, как перестроить ваш запрос в одном утверждении, но должно работать следующее:

const arr = [
 [1, 'test1'],
 [2, 'test2']
];
queryBuilder.where('some_column_1 IN(:arr)', { arr: arr });
queryBuilder.andWhere('some_column_2 IN(:arr)', { arr: arr });
queryBuilder.getMany();
...