2016-08-10 5 views
1

ための句は、私がsequelize.jsモジュールSequelize.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}); 

でのNode.jsのコードの下に持っている。しかし、それは

を達成したいとは異なるクエリを生成WHEREで条件を生成することはできません
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%'); 

いずれか1つのことをお考えですか?私を助けてください。アドバンス

答えて

2

ありがとうございます...どこあなたの偉大なソリューションのための

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

感謝を含んで列にクエリを行うことができます$シンボル、メインの列名をラップする必要があります! –

関連する問題