E_BAD_FIELD_ERROR拒绝尝试使用Bookshelf.js附加多对多

时间:2018-06-17 09:07:19

标签: bookshelf.js

我试图附加和分离具有多对多关系的实体(将一个组附加到端点),并且我收到了上述错误。

这是我的承诺:new Endpoint({id: endpoint.id}).group().attach(tagsToAdd, {transacting: t})

完整错误文本为Unhandled Rejection: Error: ER_BAD_FIELD_ERROR: Unknown column '_pivot_endpoint_group_id' in 'field list'

看起来Bookshelf正在尝试为附件自动生成列,这很奇怪,因为我在两个模型中的映射表中明确设置了列。

在端点模型中:

group () { return this.belongsToMany(Group.model, 'map_endpoint_endpoint_group', 'endpoint_id', 'endpoint_group_id'); }

在群组模型中:

endpoint () { return this.belongsToMany(Endpoint, 'map_endpoint_endpoint_group', 'endpoint_group_id', 'endpoint_id') }

生成的原始SQL是错误的 - 它看起来像这样:

sql: 'insert into `map_endpoint_endpoint_group` (`_pivot_endpoint_group_id`, `_pivot_endpoint_id`, `endpoint_id`, `id`, `name`, `notes`, `organization_id`, `setting
s_policy_id`) values (6, 22, 4, 6, \'Tag5\', \'notes\', 1, 1)' }

这是错误的,因为首先,_pivot_endpoint_group_id和_pivot_endpoint_id不是map_endpoint_endpoint_group表中的列,其次,id,名称等不是map_endpoint_endpoint_group表,而是在endpoint_group表中。 map_endpoint_endpoint_group表仅用于连接两个表。

是什么给出了?

0 个答案:

没有答案