Bookshelf.js 获取枢轴 table 属性
Bookshelf.js get pivot table attributes
我正在尝试使用 Bookshelf.js.
从我的 m-n 关系 mySql table 获取属性
我有一个 table 用户:id, name
和比赛:id,地点
和一个支点 table:user_id、tournament_id、teamname
这些是我的模型:
var User = Bookshelf.Model.extend({
tableName: 'users',
tournaments: function () {
return this.belongsToMany(Tournament);
}
});
var Users = Bookshelf.Collection.extend({
model: User
});
var Tournament = Bookshelf.Model.extend({
tableName: 'tournaments',
users: function () {
return this.belongsToMany(User);
}
});
var Tournaments = Bookshelf.Collection.extend({
model: Tournament
});
var Tournaments_Users = Bookshelf.Model.extend({
tableName: 'tournaments_users'
});
现在我做的时候
Tournaments.forge().fetch({withRelated: ['users']})
.then(function (collection) {
res.send(collection.toJSON());
})
我明白了
{
"id": 1,
"place": "Berlin",
"users": [
{
"id": 1,
"name": "Jim",
},
{
"id": 2,
"name": "Tom",
}, ...
}
我想要的:
{
"id": 1,
"place": "Berlin",
"users": [
{
"id": 1,
"name": "Jim",
"teamname" : "Team A"
},
{
"id": 2,
"name": "Tom",
"teamname" : "Team B"
}, ...
}
有人知道如何使用 Bookshelf 执行此操作吗?
您可以使用.withPivot()
方法。
像这样使用它:
users: function () {
return this.belongsToMany(User).withPivot(['teamname']);
}
在您的 return 中,您将获得一个名为 _pivot_teamname
的字段。只需重命名它们即可。
文档:http://bookshelfjs.org/#Collection-instance-withPivot
据我所知,无法获取具有自定义名称的数据透视字段。
我正在尝试使用 Bookshelf.js.
从我的 m-n 关系 mySql table 获取属性我有一个 table 用户:id, name 和比赛:id,地点 和一个支点 table:user_id、tournament_id、teamname
这些是我的模型:
var User = Bookshelf.Model.extend({
tableName: 'users',
tournaments: function () {
return this.belongsToMany(Tournament);
}
});
var Users = Bookshelf.Collection.extend({
model: User
});
var Tournament = Bookshelf.Model.extend({
tableName: 'tournaments',
users: function () {
return this.belongsToMany(User);
}
});
var Tournaments = Bookshelf.Collection.extend({
model: Tournament
});
var Tournaments_Users = Bookshelf.Model.extend({
tableName: 'tournaments_users'
});
现在我做的时候
Tournaments.forge().fetch({withRelated: ['users']})
.then(function (collection) {
res.send(collection.toJSON());
})
我明白了
{
"id": 1,
"place": "Berlin",
"users": [
{
"id": 1,
"name": "Jim",
},
{
"id": 2,
"name": "Tom",
}, ...
}
我想要的:
{
"id": 1,
"place": "Berlin",
"users": [
{
"id": 1,
"name": "Jim",
"teamname" : "Team A"
},
{
"id": 2,
"name": "Tom",
"teamname" : "Team B"
}, ...
}
有人知道如何使用 Bookshelf 执行此操作吗?
您可以使用.withPivot()
方法。
像这样使用它:
users: function () {
return this.belongsToMany(User).withPivot(['teamname']);
}
在您的 return 中,您将获得一个名为 _pivot_teamname
的字段。只需重命名它们即可。
文档:http://bookshelfjs.org/#Collection-instance-withPivot
据我所知,无法获取具有自定义名称的数据透视字段。