我阅读了与through
相关的Bookshelf文档,但是,我无法知道如何继续。我有三个表以不同于Bookshelf使用的约定命名。基本上,一个集团通过个人资料拥有许多用户。最后一个建立连接。
Table Name: User
- id_user
- username
- password
Table Name: Profile
- id_user
- id_group
Table Name: Group
- id_group
- name
- description
- status
我的小组模型是这样的:
module.export = BookShelf.model('Group', {
tableName: 'pats_grupos',
users: function() {
return this.hasMany('User').through('Profile');
}
});
考虑到我的表不遵循_id
约定(而是id_
约定),如何告诉Bookshelf使用我的自定义表命名模式?
答案 0 :(得分: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');
}
});
由于您的外键也没有遵循Bookshelf的默认命名,可能也必须在through()
call上明确声明它们。类似的东西:
//...
users: function() {
return this
.hasMany('User')
.through('Profile', 'id_user', 'id_group');
}
//...