首页 > 解决方案 > 如何将此 SQL 查询转换为 Typeorm

问题描述

我有我在查询工具中测试过的这个查询,我现在希望将它应用到 Typeorm 语法中

SELECT menu_entry.*, "user_menu".is_bookmark FROM menu_entry
LEFT JOIN "user_menu"  ON user_menu.menu_id = menu_entry.id
LEFT JOIN "user"  ON "user".id = user_menu.user_id
WHERE "user".id = 1

我已经尝试过这种方法,但它不是 100% 正确的:


async findUserBookmarks(request): Promise<any>{
    const user: any = await createQueryBuilder(User, 'user')
    .leftJoinAndSelect('menu_id', 'menu_entry')
    .leftJoinAndSelect('user.id', 'roles')
    .where('user.id = :id', {id:1 })
    .getMany()

    return console.log('user: ', user);
  }

标签: sqlnestjstypeorm

解决方案


假设您为实体定义的类menu_entryMenuEntry,typeorm 查询语句将如下 -

async findUserBookmarks(request): Promise<any>{
    return await getRepository(MenuEntry).
    .createQueryBuilder("menuEntry")
    .leftJoinAndSelect("user_menu","userMenu","userMenu.menu_id = menuEntry.id")
    .leftJoinAndSelect("user","user","user.id = userMenu.user_id")
    .where("user.id = 1" )
    .getMany()
}

推荐阅读