gpt4 book ai didi

mysql - Bookshelf.js 获取数据透视表属性

转载 作者:行者123 更新时间:2023-11-28 23:20:12 26 4
gpt4 key购买 nike

我正在尝试使用 Bookshelf.js 从我的 m-n 关系 mySql 表中获取属性。

我有一张表 users: id, name和比赛:id,地点和一个数据透视表: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']);
}

在您的返回中,您将获得一个名为 _pivot_teamname 的字段。只需重命名它们即可。文档:http://bookshelfjs.org/#Collection-instance-withPivot

据我所知,没有办法获取具有自定义名称的数据透视字段。

关于mysql - Bookshelf.js 获取数据透视表属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42038409/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com