2017-02-04 16 views
1

Я пытаюсь получить атрибуты из моей m-n реляционной таблицы mySql с помощью Bookshelf.js.Bookshelf.js получить атрибуты сводной таблицы

У меня есть пользователи таблицы: идентификатор, имя и турниры: идентификатор, место и сводная таблица: 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?

ответ

0

Вы можете использовать метод .withPivot().

Используйте это так:

users: function() { 
    return this.belongsToMany(User).withPivot(['teamname']); 
} 

В вашем возвращении, вы получите поле с именем _pivot_teamname. Просто переименуйте их, чтобы получить это хорошо. Документация: http://bookshelfjs.org/#Collection-instance-withPivot

До тех пор, пока я знаю, нет способа получить поля поворота с помощью настраиваемого имени.

 Смежные вопросы

  • Нет связанных вопросов^_^