Sequelize.js不能在关联表字段的WHERE子句中生成条件

我有下面的代码在Node.js与sequ​​elize.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%'); 

任何人有这个想法吗? 请帮帮我。

提前致谢

您应该将列名称包含在$符号的主要位置,这样可以对包含的列进行查询

 // custom conditions parameters conditions['$or'] = {'$company.name$': {'$like': req.query.search + '%'}, first_name: {'$like': '%' + req.query.search + '%'},...