@IIITRIX

Как сформировать createQueryBuilder в typeorm?

Был такой query в typeorm 0.2 версии

const topic = await Topic.query(`
	select
	t.*,
	f.user_id user_followed_id,
	m.user_id user_moderator_id
	from topic t
	left join follow f on f.topic_id = t.id and f.user_id = $1
	left join moderator m on m.topic_id = t.id and m.user_id = $2
	where t.title = $3`;


В версии 0.3.2 все изменилось и теперь они делают так по документации
const topic = await AppDataSource
    .getRepository(Topic)
    .createQueryBuilder("topic")
    .getOne()


Не могу разобраться. Помогите пожалуйста с моим примером.
Чтобы понимать как в дальнейшем делать запросы

Всем заранее спасибо
  • Вопрос задан
  • 371 просмотр
Решения вопроса 1
@kamk0
Вам нужно определить полнотекстовый индекс @Index({ fulltext: true }) и использовать построитель запросов для написания собственного пользовательского запроса пользовательского запроса и использовать специальный синтаксис sql.
Сущность:
@Entity()
export class User {

    @PrimaryGeneratedColumn()
    id: number;

    @Index({ fulltext: true })
    @Column("varchar")
    name: string;

    @Index({ fulltext: true })
    @Column("varchar")
    lastname: string;

    @Index({ fulltext: true })
    @Column("text")
    personalDescription: string;
}

Выберите с помощью построителя запросов:

const searchTerm = "programmer";
const result = await connection.manager.getRepository(User)
            .createQueryBuilder()
            .select()
            .where('MATCH(lastname) AGAINST ('${searchTerm}' IN BOOLEAN MODE)')
            .orWhere('MATCH(name) AGAINST ('${searchTerm}' IN BOOLEAN MODE)')
            .orWhere('MATCH(personalDescription) AGAINST ('${searchTerm}' IN BOOLEAN MODE)')
            .getMany();
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы