Orm 使用Sequelize连接3个表
我正在尝试将下面的原始查询转换为ORM,但无法实现任何功能 原始查询Orm 使用Sequelize连接3个表,orm,sequelize.js,Orm,Sequelize.js,我正在尝试将下面的原始查询转换为ORM,但无法实现任何功能 原始查询 select * from "Invoices" I LEFT JOIN "Requests" R ON R."id" = I."requestId" LEFT JOIN "Supps" S ON S."requestId" = R."id" where S."confirm" = 'OK' 我所尝试的: Requests.belongsTo(Invoices, { foreignKey: "id" }); S
select * from "Invoices" I
LEFT JOIN "Requests" R ON R."id" = I."requestId"
LEFT JOIN "Supps" S ON S."requestId" = R."id"
where S."confirm" = 'OK'
我所尝试的:
Requests.belongsTo(Invoices, { foreignKey: "id" });
Supps.belongsTo(Requests, { foreignKey: "requestId" });
Supps.hasMany(Requests, { foreignKey: "requestId" });
Invoices.hasMany(Requests, { foreignKey: "requestId" });
Invoices.findOne({
include: [{ model: Requests, required: false }, { model: Supps, required: false }],
where: { Sequelize.col("Supps.confirm"): { "OK" } }
}).then(data => {
console.log(data);
})
但是这会生成一个非常长的查询,其中包含多个子查询和错误的数据,当然您还需要在关联中添加
sourceKey
。()
您还可以添加{raw:true}
以获得一级json响应
Invoices.findOne({
include: [{ model: Requests, required: false }, { model: Supps, required: false }],
where: { Sequelize.col("Supps.confirm"): { "OK" } },
raw:true
}).then(data => {
console.log(data);
});
我请求您共享sequelize生成的查询。
Invoices.findOne({
include: [{ model: Requests, required: false }, { model: Supps, required: false }],
where: { Sequelize.col("Supps.confirm"): { "OK" } },
raw:true
}).then(data => {
console.log(data);
});