如何使用ORM编写此查询?
SELECT p.id,
p.name,
COUNT(c.id) counter
FROM Posts p
LEFT JOIN Comments c
ON c.post_id = p.id
WHERE p.rating > 100
GROUP BY p.id
HAVING counter > 10
ORDER BY counter DESC
LIMIT 5
答案 0 :(得分:3)
试试这个:
Post.findAll({
where: {rating: {gt: 100}},
include: [Comments],
having: ['COUNT(?) >= ?', '`comment`.`id`', 10]
})
通过这个问题阅读my research。
我使用sequelize@2.0.0-dev9
答案 1 :(得分:0)
由于查询中存在聚合列counter
,我认为此查询没有标准的ORM方法来获取实体。但Sequelize提供了运行原始SQL表达式并在您需要的任何模型中解析结果的方法。或者甚至更深,你可以自己解析响应,根据需要创建复杂的结果。
以下是此案例的相关文档: http://docs.sequelizejs.com/manual/tutorial/raw-queries.html