我在MySQl DB中有两个表:
客户:
- cust_ID(PK)
- CUST_NAME
- trans_ID(FK)
交易
- trans_id(PK)
- trans_amount
在Node.js中,我为这两个表创建了两个模型,现在我想基于trans_id对这两个表进行内部连接。我没有得到如何做的想法。
var Transaction = bookshelf.Model.extend({
tableName: 'Transaction'
});
var Customer = bookshelf.Model.extend({
tableName: 'Customer'
});
答案 0 :(得分:3)
我自己也是一个bookhelf.js初学者,但是如果我没有弄错的话,bookshelf.js将内部联接的概念抽象出来。相反,如果您的问题可以翻译为'我如何获得交易/交易及其相关客户?'答案是这样的:
transaction.js:
var Transaction = bookshelf.Model.extend({
tableName: 'Transaction',
customers: function() {
return this.hasMany(Customer, 'trans_ID');
}
});
customer.js:
var Customer = bookshelf.Model.extend({
tableName: 'Customer',
transaction: function() {
return this.belongsTo(Transaction, 'trans_ID');
}
});
要与所有相关客户进行交易,请执行以下操作:
new Transaction()
.where('trans_id', 1)
.fetch({withRelated: ['customers']})
.then(function(theTransaction) {
var arrayOfCustomers = theTransaction.customers;
//...
});
有关详细信息,请参阅bookshelf.js的hasMany和belongsTo文档。
我希望这个答案能够满足您的需求。