如何查询多对多关系sequelize?
Posted
技术标签:
【中文标题】如何查询多对多关系sequelize?【英文标题】:How to query many to many relationship sequelize? 【发布时间】:2016-12-15 21:05:03 【问题描述】:表有多对多的关系,由一个订单表连接。
出口 --> 订单
我想获取今天订单的奥特莱斯列表。
所以这里有一个获取所有网点的函数:
db.Outlet.findAll(include: [
model:db.Product, attributes: ['id', 'name', 'nameKh']
]).then(function(outlets)
return res.jsonp(outlets);
)
我得到了这个结果:
我只能选择 where Product Id by using this:
db.Outlet.findAll(include: [
model:db.Product, attributes: ['id', 'name', 'nameKh'], where: id: 2
]).then(function(outlets)
return res.jsonp(outlets);
)
如何查询具体的订单金额,或者今天的订单日期?
这是我的模型:
出口:
var Outlet = sequelize.define('Outlet',
outletCode: DataTypes.STRING,
outletName: DataTypes.STRING,
outletNameKh: DataTypes.STRING,
outletSubtype: DataTypes.STRING,
perfectStoreType: DataTypes.STRING,
address: DataTypes.STRING
,
associate: function(models)
Outlet.belongsToMany(models.Product, through: models.Order);
Outlet.belongsTo(models.Distributor);
// Outlet.hasMany(models.Order);
);
产品:
var Product = sequelize.define('Product',
inventoryCode: DataTypes.STRING,
name: DataTypes.STRING,
nameKh: DataTypes.STRING,
monthlyCaseTarget: DataTypes.INTEGER,
pieces: DataTypes.INTEGER,
star: DataTypes.BOOLEAN,
price: DataTypes.FLOAT,
active: DataTypes.BOOLEAN
,
associate: function(models)
Product.belongsToMany(models.Outlet, through: models.Order);
Product.belongsTo(models.Category);
// Product.hasMany(models.Order);
);
订单:
var Order = sequelize.define('Order',
id:
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true
,
amount: DataTypes.INTEGER
,
associate: function(models)
Order.belongsTo(models.Outlet);
Order.belongsTo(models.Product);
Order.belongsTo(models.User);
);
【问题讨论】:
感谢这个带有示例的清晰问题,我什至从中学到了! 【参考方案1】:试试看:
db.Outlet.findAll(
include: [
model:db.Product,
attributes: ['id', 'name', 'nameKh'],
through: where: amount: 10
]
)
【讨论】:
可以在哪里放出包含? 是的,@Ron。你应该像..findAll(include:[...], where: '$product.amout$': 10 )
这样包装 where 语句
@TilekbekovYrysbek 你刚刚用最后一条评论救了我的命。谢谢你
如果我想搜索多个金额怎么办?以上是关于如何查询多对多关系sequelize?的主要内容,如果未能解决你的问题,请参考以下文章