我有一张表有两个关系:
工作 - >公司和 工作 - >用户
我想只选择那些已经附加了用户的作业,并让用户与之相关联。我试过了:
new Job().fetchAll({withRelated: ['user']})
但是,这始终会返回附加了用户的所有作业。我也尝试过:
new Job().fetchAll({
withRelated: [{
'user':function(qb){
qb.where('id','=','job.user_id');
}
}]
});
我能想到的用户子查询的每个组合。但这只允许我过滤用户关系返回的结果。
我知道SQL,但我想使用ORM。所以最终查询应该是:
SELECT * FROM jobs JOIN users ON users.id = jobs.user_id LEFT JOIN companies on job.company_id = companies.id
如何使用BookshelfJS或Knex进行此操作?
答案 0 :(得分:0)
我是使用查询构建器完成的。
new Job().query(function(qb){
qb.innerJoin('users', 'user_id', 'users.id');
}).fetchAll({
withRelated: ['company', 'users']
});
基本上将Bookshelf与Knex语句相结合。
如果在纯书架中可以做到这一点,请告诉我,我会提出答案!