How this query can be written using 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
Since there is aggregated column counter
in your query I think there is no standard ORM method to fetch entities by this query. But Sequelize provide the way to run raw SQL expression and parse results in any model you need. Or even deeper you can parse response yourself creating as complex result as you need.
Here is related docs for this case: http://sequelizejs.com/docs/latest/usage#raw-queries
Try this:
Post.findAll({
where: {rating: {gt: 100}},
include: [Comments],
having: ['COUNT(?) >= ?', '`comment`.`id`', 10]
})
Read my research by this question.
i use sequelize@2.0.0-dev9