序列化MySql等效的ORM查询 [英] Sequelize MySql equivalent ORM query
本文介绍了序列化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查询这是我当前的查询
I want to build an equivalent ORM query based on it Here is my current query
//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 + '%'
})
}]
})
但这将返回空结果,但是行查询返回结果
But this will return the empty result however the row query returns result
从ORM生成的等效查询
the equivalent query generated from 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;
推荐答案
我认为,您只需要修改查询的位置,就可以尝试以下操作:
I think , you need to just modify where query a bit , try this :
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'],
}]
})
这篇关于序列化MySql等效的ORM查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文