sql - 如何将此 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);
}
解决方案
假设您为实体定义的类menu_entry
是MenuEntry
,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()
}
推荐阅读
- python - 为什么 Buildozer 在将 main.py 转换为 apk 时会出现此错误
- javascript - 数据导致 Ajax POST 调用在客户端失败
- dialogflow-es - How to replace an existing DialogFlow action with Assistant SDK action
- sql-server - Error handler for insert into before deleting the records
- bash - can I get the object file id for a deleted file with git?
- python-3.x - Why does ResNet models have consecutive BatchNormalization layers?
- javascript - How to make array wait for nested loops to complete before returning
- vue.js - Vuetify align list to right side of parent card
- kubernetes - coredns crashes frequently and application is not responding
- reactjs - 在反应中找到根路径时隐藏组件