Bookshelf.js或Knex.js中的2个表的外连接
我是Bookshelf.js和knex的新手。 我需要在Bookshelf / knex中写一个相当于这个的查询
SELECT Inv.*, Comp.* FROM Inv, Comp WHERE Inv.uId =2 AND Comp.cId = Inv.cId;
发表表格有:
Id | 主键,整数不为空 col1 | string数据 cId | 整数,外键引用C表 uId | 整数外键引用U表
比较表有:
cId | 主键,整数不为空 col3 | string数据
使用knex查询生成器。 假设Invs是一个模型Inv的集合,它可能看起来像这样:
Invs.forge().query(function(qb) { qb.join('Comp', 'Comp.cId', '=', 'Inv.cId'); qb.where('Inv.uId', 2); }).fetch({withRelated: 'comps'}).then(...)
其中comps是在Inv模型中定义的关系。 您也可以完全跳过书架,直接通过bookshelf.knex使用knex来形成您需要的确切查询:
bookshelf.knex('Inv') .join('Comp', 'Comp.cId', '=', 'Inv.cId') .where('Inv.id', 2) .select() .then(...)