joinbookshelf.js

我如何在bookshelf.js中实现以下关系

SELECT user_accounts.user_id, `event_id` FROM `calendar_events` JOIN user_accounts ON user_accounts.user_id = calendar_events.`created_by` LIMIT 10 

我的模型

 var CalendarEvent = bookshelf.Model.extend({ tableName: 'calendar_events', hasTimestamps: ['created_on'], user: function() { return this.hasOne('UserAccount','user_id'); } }); var UserAccount = bookshelf.Model.extend({ tableName: 'user_account' }); 

如果您想获得精确的样式查询,可以使用knex查询生成器并尝试构build一个查询以满足您的需求

没有testing过,但应该是这样的

 CalendarEvent.forge().query(function(qb){ qb.join('user_accounts', 'user_accounts.user_id', '=', 'calendar_events.created_by'); //qb.where() //if you wanted //qb.andWhere(); //and if you wanted more qb.limit(10); }) .fetchAll(); 

(你不需要.where或.andWhere,只需添加那些有趣的)

这可能是纯粹在书架上做的,但我现在还不确定。