Mysql 在联接表中插入附加数据
我正在用express构建一个应用程序,并使用bookshelf(mysql)js作为ORM。 我有一个多对多的关系,我试图在连接表中存储一些额外的数据 我的模型:Mysql 在联接表中插入附加数据,mysql,node.js,express,knex.js,bookshelf.js,Mysql,Node.js,Express,Knex.js,Bookshelf.js,我正在用express构建一个应用程序,并使用bookshelf(mysql)js作为ORM。 我有一个多对多的关系,我试图在连接表中存储一些额外的数据 我的模型: const Product = Bookshelf.Model.extend({ tableName: 'products', factors() { return this.belongsToMany('Factor', 'product_factors', 'product_id', 'facto
const Product = Bookshelf.Model.extend({
tableName: 'products',
factors() {
return this.belongsToMany('Factor', 'product_factors', 'product_id', 'factor_id')
}
})
const Factor = Bookshelf.Model.extend({
tableName: 'factors',
products() {
return this.belongsToMany('Product')
}
})
在“产品系数”表中创建具有关系的新产品
/** Create product */
router.route('/').post((req, res) => {
new Product({name: req.body.name})
.save()
.then(product => {
// attaching relation
product.factors().attach([3, 5])
.then(hz => {
res.status(201).json({
message: 'Product created'
})
})
})
})
“产品系数”表
|ID|product_id|factor_id|quantity|
|--|----------|---------|--------|
|1 |10 |3 |NULL |
|2 |10 |5 |NULL |
如何在附加关系的同时插入数量?文档中有一个示例说明如何在中插入数量。为方便起见,这里是:
let Doctor = bookshelf.Model.extend({
patients: function() {
return this.belongsToMany(Patient).through(Appointment);
}
});
let Appointment = bookshelf.Model.extend({
patient: function() {
return this.belongsTo(Patient);
},
doctor: function() {
return this.belongsTo(Doctor);
}
});
let Patient = bookshelf.Model.extend({
doctors: function() {
return this.belongsToMany(Doctor).through(Appointment);
}
});
正如您在医生
和患者
模型中所看到的,您必须使用.belongstomy(Model).through(AnotherModel)
。然后,只需使用所需的方法来处理数据
此外,由于您正在定义联接模型,所以也可以直接使用它来访问和修改相关表包含的数据。例如:
Appointment.forge({patient_id: 2, doctor_id: 1, confirmed: true}).save()
或
Appointment.forge({id: 4}).destroy()