我得到了以下数据模型:https://imgur.com/a/AwwpW9F
基本上,一个if (moneyInput.Text != null)
可以属于许多User
,而一个Projects
可以具有许多Project
,我通过一个名为{{ 1}}
我可以使用原始SQL查询
Users
哪个给我
UserProjects
我将如何使用Objection ORM构造此查询?也许我可以直接进行原始查询?像
SELECT "user".email, project.name FROM "user"
JOIN userprojects ON userprojects.user_id = "user".id
JOIN project ON project.id = userprojects.project_id
?
答案 0 :(得分:2)
Objection.js可以代替您自己完成所有工作。您只需声明一个ManyToManyRelation
。
static relationMappings = {
projects: {
relation: Model.ManyToManyRelation,
modelClass: Project,
join: {
from: 'user.id',
through: {
from: 'userprojects.user_id',
to: 'userprojects.project_id'
},
to: 'project.id'
}
}
}
那么您就可以使用急切的加载获取用户的项目:
User.query().eager('projects').where("id", userId).first()
您将得到类似的东西:
User {
id: 3,
firstname: 'firstname',
lastname: 'lastname',
email: 'email',
projects: [
{id: 1,
name: 'name1'},
{id: 2,
name: 'name2'},
]
}
答案 1 :(得分:0)
Nvm,找到了解决方法
/关闭
JK,
如果其他人遇到同样的问题,这对我有用:
return User.query().where("user_id", parent.id)
.join('userprojects', 'user.id', '=', 'userprojects.user_id')
.join('project', 'project.id', '=', 'userprojects.project_id')
.select('user.id', 'userprojects.project_id', 'project.name')