Я сражаюсь с отношениями внутри моей книжной модели. То, что я пытаюсь сделать, это создать схему, которая содержит 4 таблицы:Bookshelf.js принадлежит запросу с неправильным столбцом
- пользователей
- роли
- привилегии
- privileges_roles
С отношений между ними, как это:
пользователей manyTOone ролей ManyToOne privileges_roles oneTOmany привилегии
Я легко достичь отношения между правами и ролями с:
привилегиях
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);
}
});
};
}
PrivilegeRole
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);
}
});
};
}
Эти работы действительно прекрасные. К сожалению, когда я пытаюсь принести привилегии от пользователя модели это держать вставив идентификатор вместо 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
, гдеprivileges_roles
.role_id
в (1)
Вместо role_id
в (3), как это в записи неправдоподобным.