我有两个表具有 belongsToMany
关系。数据透视表还包含一个名为 state
的列,它可以有 3 个不同的值。假设我的表是 Table1
和 Table2
。
具有不同状态
的相同Table1-Table2
关系可以有多个条目。
我想获取 Table1
的所有数据透视条目,包括同一 Table2
的任何多个条目。
不幸的是,代码
return this.belongsToMany(Table2, 'pivot_table1_table2').withPivot(['state'])
只返回每个 Table2
的第一个条目。
感谢您的帮助。
最佳答案
这就是书架的工作原理!这是功能的一部分:删除欺骗。我找到了解决方法;从联结表中明确选择一个唯一的属性。如果没有,请为联结表创建一个模型。遗憾的是,那是当时唯一的解决方案。
更新:
也许是这样的。 routes.code 在我的例子中是独一无二的,它是联结表的一部分。如果这不会解决问题,请为联结表创建一个模型并设置好(这可能更受欢迎)。
new Station().where({
id: req.params.id
}).fetch({
withRelated: [{
'routes': function(qb) {
qb.select('routes.id', 'routes.code');
}
}]
}).then(function(result) {
res.json(result.toJSON());
});
关于javascript - BookshelfJS belongsToMany 不返回重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30536411/