[英]Bookshelf.js belongsToMany query with wrong column
我正在為書架模型內部的關系而奮斗。 我想做的是創建包含4個表的架構:
他們之間的關系是這樣的:
用戶 manyTOone 角色 manyTOone 特權 _ 角色 oneTO許多特權
我已經通過以下方法輕松實現了特權和角色之間的關系:
禮遇
class Privileges {
constructor() {
this.model = bookshelf.Model.extend({
tableName: 'privileges',
roles: function () {
return this.belongsToMany(Roles.model).through(PrivilegeRole.model);
}
});
};
}
的角色
class Roles {
constructor() {
this.model = bookshelf.Model.extend({
tableName: 'roles',
privileges: function() {
return this.belongsToMany(Privileges.model).through(PrivilegeRole.model);
},
users: function() {
return this.hasMany(Users.model);
}
});
};
}
特權角色
class PrivilegeRole {
constructor() {
this.model = bookshelf.Model.extend({
tableName: 'privileges_roles',
role: function() {
return this.belongsTo(Roles.model);
},
privileges: function() {
return this.belongsTo(Privileges.model);
}
});
};
}
這些工作真的很好。 不幸的是,當我試圖從用戶模型中獲取特權時 ,它會不斷插入id而不是role_id進行查詢。
class Users {
constructor() {
this.model = bookshelf.Model.extend({
tableName: 'users',
role: function () {
return this.belongsTo(Role.model);
},
privileges: function () {
// return this.belongsToMany(Privileges.model).through(PrivilegeRole.model);
return this.belongsToMany(Privileges.model, 'privileges_roles', 'role_id', 'privilege_id', 'role_id');
}
});
};
}
因此,無論我做什么,書架最終都會創建如下查詢:
選擇
privileges
。*,privileges_roles
。id
為_pivot_id
和privileges_roles
。role_id
為_pivot_role_id
,privileges_roles
。privilege_id
作為_pivot_privilege_id
從privileges
內加入privileges_roles
上privileges_roles
。privilege_id
=privileges
。id
whereprivileges_roles
。 (1)中的role_id
而不是像(3)中的role_id
那樣,它在獲取的記錄中。
好了,所以我終於找到了解決方案。 代替以前使用:
privileges: function () {
return this.belongsToMany(Privileges.model, 'privileges_roles', 'role_id', 'privilege_id', 'role_id');
}
我只需要簡單地使用:
privileges: function () {
return this.belongsToMany(Privileges.model).through(PrivilegeRole.model, 'role_id', 'privilege_id', 'role_id');
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.