我必须在不同的表中找到一个字段,也就是说,我必须检查搜索是否在Customer表的不同字段,Shops表的不同字段以及ContactPerson表的不同字段中>
Customer and Persons和Customer Shops表为1-N并已关联
我想找到的是“搜索”变量。
这是我的代码
CustomerPersonsRelation()
CustomerShop()
var result = await CustomerModel.findAll({
...params,
include: [
{model : ShopModel},
{model: ContactPersonModel}
]
})
所有都是进口的,不用担心。 我的参数是这些:
{
where: {
$or: [
{
'$Customer.customer_name$': { $like: '%' + search + '%' },
},
{
'$Customer.customer_fiscal_name$': { $like: '%' + search + '%' },
},
{
'$Customer.customer_responsable_name$': { $like: '%' + search + '%' },
},
{
'$Customer.customer_responsable_phone$': { $like: '%' + search + '%' },
},
{
'$Customer.customer_web$': { $like: '%' + search + '%' },
},
{
'$Shops.shop_name$': { $like: '%' + search + '%' },
},
{
'$Shops.shop_phone$': { $like: '%' + search + '%' },
},
{
'$Shops.shop_mobile$': { $like: '%' + search + '%' },
},
{
'$ContactPersons.contactp_name$': { $like: '%' + search + '%' },
},
{
'$ContactPersons.contactp_phone$': { $like: '%' + search + '%' },
},
{
'$ContactPersons.contactp_mobile$': { $like: '%' + search + '%' },
}
]
},
limit: 3
})
}
但是返回此错误: 错误:SequelizeDatabaseError:无法绑定多部分标识符“ ContactPersons.contactp_mobile”。 (所有相关字段都会出现此错误。)
我能做些什么呢?
答案 0 :(得分:1)
解决了!
经过大量测试,我发现错误与关联无关,不在OR中,而是在LIMIT之内。
搜索后,我解决了在include中添加duplicating: false
的问题。
最终的代码是这样的:
var result = await CustomerModel.findAll({
include: [
{model : ShopModel, require: true, duplicating: false},
{model: ContactPersonModel, require: true, duplicating: false}
],
...params,
raw
})