Sequelize where条件来自联接结果



我有表product,关系是product belong to categoryproduct belong to outletproduct belong to market。现在我需要搜索名称为%keyword%的产品,或者门店名称为%keyword%的商品,或者类别名称为%关键字%的商品联接表后的条件可能在哪里?

let where = {
active: true,
[Op.or]: [
{ name: { [Op.like]: '%' + keyword + '%' } },
{ 'category.name': { [Op.like]: '%' + keyword + '%' } },
{ 'outlet.name': { [Op.like]: '%' + keyword + '%' } },
]
}
let inWhere = { active: true };
model.findAll({
attributes: ['name'],
where,
include: [
{
required: false,
model: db.category,
as: 'category',
where: inWhere,
attributes: ['name']
},
{
required: false,
model: db.outlet,
as: 'outlet',
where: inWhere,
attributes: ['name', 'city']
},
{
required: false,
model: db.market,
as: 'market',
where: { active: true },
attributes: ['name']
}
]
})

是的,这是可能的。你的where条款应该如下-

where: {
[Op.or]: [
{ name: { [op.like]: '%${keyword}%' } },
{ '$`category`.`name`$': { [op.like]: '%${keyword}%' } },
{ '$`outlet`.`name`$': { [op.like]: '%${keyword}%' } }
]
},

希望它能有所帮助!

最新更新