2017-02-27 43 views
0

throughに関連するBookshelfのドキュメントを読みましたが、どのように進めるべきか分かりませんでした。 Bookshelfが使用するテーブルとは別の表記法で3つのテーブルがあります。基本的に、グループにはプロファイルを通じて多くのユーザーがいます。接続を行う最後のもの。Bookshelf.jsで3つのテーブルを結合するにはどうすればよいですか?

Table Name: User 
    - id_user 
    - username 
    - password 

Table Name: Profile 
    - id_user 
    - id_group 

Table Name: Group 
- id_group 
- name 
- description 
- status 

マイグループモデルはそうのようなものです:

私のテーブルは、私が仕事に本棚を伝えることができるか、 _id大会(代わりに、 id_ 1)に従わない考慮して撮影
module.export = BookShelf.model('Group', { 
    tableName: 'pats_grupos', 

    users: function() { 
    return this.hasMany('User').through('Profile'); 
    } 
}); 

私のカスタムテーブルの命名パターンで?

答えて

0

Bookshelf's idAttribute documentationのように、デフォルトの 'id'を使用しない場合は、使用するid属性を明示的に宣言するようにモデルを変更する必要があります。同様に:

module.export = BookShelf.model('Group', { 
    tableName: 'pats_grupos', 
    idAttribute: 'id_group', 

    users: function() { 
    return this.hasMany('User').through('Profile'); 
    } 
}); 

そして、あなたの外部キーはまた、あなたのを命名本棚のデフォルトを次されていないためには、through() call上で明示的に宣言する必要があります。次のようなもの:

//... 
users: function() { 
    return this 
    .hasMany('User') 
    .through('Profile', 'id_user', 'id_group'); 
} 
//... 
関連する問題