[英]Sequelize.js can't generate condition in WHERE clause for associated table field
我在下面的代码中使用sequelize.js模块在Node.js中
// association Users belongs to Companies
Users.belongsTo(Companies, {
foreignKey: 'company_id',
});
// default conditions
var conditions = {deleted: '0'};
var companyConditions = {deleted: '0'};
// custom conditions parameters
conditions['$or'] = {first_name: {'$like': '%' + req.query.search + '%'}, last_name: {'$like': '%' + req.query.search + '%'}, email: {'$like': '%' + req.query.search + '%'}};
companyConditions['$or'] = {name: {'$like': req.query.search + '%'}};
// generrate select query
Users.findAll({include: [{model: Companies, where: companyConditions}], where: conditions});
但是它产生与想要实现不同的查询
SELECT `users`.*, `company`.* FROM `users` AS `users`
INNER JOIN `companies` AS `company` ON `users`.`company_id` = `company`.`id` AND `company`.`deleted` = '0' AND (`company`.`name` LIKE 'town%')
WHERE `users`.`deleted` = '0' AND (`users`.`first_name` LIKE '%town%' OR `users`.`last_name` LIKE '%town%' OR `users`.`email` LIKE '%town%');
如果我更改自定义条件,则its not working
// custom conditions parameters
conditions['$or'] = {'company.name': {'$like': req.query.search + '%'},first_name: {'$like': '%' + req.query.search + '%'}, last_name: {'$like': '%' + req.query.search + '%'}, email: {'$like': '%' + req.query.search + '%'}};
// companyConditions['$or'] = {name: {'$like': req.query.search + '%'}};
然后,node.js引发错误Unhandled rejection SequelizeDatabaseError: ER_BAD_FIELD_ERROR: Unknown column 'users.company.name' in 'where clause'
我想实现什么?
SELECT users.*, company.* FROM users AS users
INNER JOIN companies AS company
ON users.company_id = company.id AND company.deleted = '0'
WHERE users.deleted = '0' AND (users.first_name LIKE '%town%' OR users.last_name LIKE '%town%' OR users.email LIKE '%town%' OR company.name LIKE 'town%');
有人对此有任何想法吗? 请帮我。
提前致谢
您应该使用$
符号将列名包装在main所在的位置,这样可以查询include中的列
// custom conditions parameters
conditions['$or'] = {'$company.name$': {'$like': req.query.search + '%'}, first_name: {'$like': '%' + req.query.search + '%'},...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.