2017-02-04 2 views
1

Ich versuche, Attribute aus meiner m-n relationalen mySql-Tabelle mit Bookshelf.js zu erhalten.Bookshelf.js Pivot-Tabellenattribute

Ich habe eine Tabelle Benutzer: ID, Name und Turnieren: id, legen und eine Pivot-Tabelle: user_id, tournament_id, Teamname

sind meine Modelle sind:

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' 
}); 

Nun, wenn ich do

Tournaments.forge().fetch({withRelated: ['users']}) 
.then(function (collection) { 
    res.send(collection.toJSON()); 
}) 

ich

{ 
    "id": 1, 
    "place": "Berlin", 
    "users": [ 
     { 
      "id": 1, 
      "name": "Jim", 
     }, 
     { 
      "id": 2, 
      "name": "Tom", 
     }, ... 
} 

Was ich will:

{ 
    "id": 1, 
    "place": "Berlin", 
    "users": [ 
     { 
      "id": 1, 
      "name": "Jim", 
      "teamname" : "Team A" 
     }, 
     { 
      "id": 2, 
      "name": "Tom", 
      "teamname" : "Team B" 
     }, ... 
} 

Wer weiß, wie das Bücherregal mit zu tun?

Antwort

0

Sie können .withPivot() Methode verwenden.

Benutzen Sie es wie folgt aus:

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

In Ihrer Rückkehr werden Sie ein Feld _pivot_teamname genannt bekommen. Benenne sie einfach um, um es gut zu machen. Dokumentation: http://bookshelfjs.org/#Collection-instance-withPivot

Solange ich weiß, gibt es keine Möglichkeit, die Pivot-Felder mit einem benutzerdefinierten Namen abzurufen.

Verwandte Themen