Sequelize MySql эквивалентный запрос ORM

У меня такой запрос строки

SELECT d.title FROM DEALS d LEFT JOIN USER u ON u.idUser = d.userId WHERE ((d.title LIKE '%gouthamkrishna%' OR d.keywords LIKE '%gouthamkrishna%') OR CONCAT(u.firstName,'',u.lastName) LIKE '%gouthamkrishna%') AND d.isPublic=1 

Я хочу создать эквивалентный запрос ORM на основе этого. Вот мой текущий запрос

 //deals table const Deals = require('deals'); //user table const User = require('user'); Deals.findAndCountAll({ where:{ isPublic:1, [Op.or]:[ {title: { $like: '%' + params.keyword + '%' }}, {keywords: { $like: '%' + params.keyword + '%' }} ] }, attributes:['title'], include:[ {model:User, required:false,attributes:['firstName'], where:Sequelize.where(Sequelize.fn('concat_ws', Sequelize.col('firstName'), ' ', Sequelize.col('lastName')), { $like: '%' + params.keyword + '%' }) }] }) 

Но это вернет пустой результат, однако запрос строки возвращает результат

эквивалентный запрос, генерируемый ORM

 SELECT `DEALS`.`idDeal`, `DEALS`.`title`, `USER`.`idUser` AS `USER.idUser`, `USER`.`firstName` AS `USER.firstName` FROM `DEALS` AS `DEALS` LEFT OUTER JOIN `USER` AS `USER` ON `DEALS`.`userId` = `USER`.`idUser` AND concat_ws(`firstName`, ' ', `lastName`) LIKE '%gouthamkrishna%' WHERE (`DEALS`.`title` LIKE '%gouthamkrishna%' OR `DEALS`.`keywords` LIKE '%gouthamkrishna%') AND `DEALS`.`isPublic` = 1; 

Я думаю, вам нужно просто немного изменить запрос, попробуйте следующее:

 Deals.findAndCountAll({ where:{ isPublic:1, [Op.or]:[ {title: { $like: '%' + params.keyword + '%' }}, {keywords: { $like: '%' + params.keyword + '%' }}, Sequelize.where(Sequelize.fn('concat_ws', Sequelize.col('firstName'), ' ', Sequelize.col('lastName')), { $like: '%' + params.keyword + '%' }) ] }, attributes:['title'], include:[ { model:User, required:false, attributes:['firstName'], }] })