2016-08-10 1 views
1

I Code unten in Node.js mit sequelize.js ModulSequelize.js kann nicht erzeugen Zustand in WHERE-Klausel für die dazugehörige Tabellenfeld

// 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}); 

haben, aber es andere Abfrage produzieren als

erreichen wollen
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%'); 

Wenn ich ändern benutzerdefinierte Bedingung 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 + '%'}}; 

Dann löst node.js Fehler Unhandled rejection SequelizeDatabaseError: ER_BAD_FIELD_ERROR: Unknown column 'users.company.name' in 'where clause'

Was ich erreichen möchte?

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%'); 

Jede eine Ahnung darüber haben? Bitte hilf mir.

Vielen Dank im Voraus

Antwort

2

Sie sollen Spaltennamen in Haupt wo mit $ Symbol wickeln, das ermöglicht in umfassen

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

Dank für Ihre große Lösung ... Abfrage Spalten zu tun !!! –

Verwandte Themen