我觉得自己好像碰到了砖墙,同时将旧的PHP应用程序功能转换为Node和Sequelize。也许我正在接近ORM能做的限制,但只是在我放弃之前想问一下。让我们想象三个表格:Video
,Task
,PublishDate
。如何通过聚合函数在次序中排序
该应用要求Video
可能有多个PublishDate
和多个Task
s。 Task
s的截止日期将通过查看Video
的最小值PublishDate
s来计算。
因此,如果Video
有2015-12-01
和2015-08-15
2分PublishDate
的,我们会把使用2015-08-15
和执行额外的计算上获得Task
到期日。
当我试图获得按其计算到期日期排列的Task
列表时,会出现此问题。
我试过很多不同的方法。这一最新尝试尝试使用sequelize.fn
功能
models.Task.findAll({
where: {isActive: false, isCompleted: false},
include: [
{
model: models.Video,
attributes: [[sequelize.fn('min', 'video.publishDates.date'), 'dueDate']],
include: [models.PublishDate]
}
],
order: [['video', 'dueDate', 'ASC']],
limit: 50
})
我不鼓励,我在正确的方向我当家,因为即使没有订单条款,这一尝试只返回一个记录。尽管如此,这感觉就像我一整天都离我最近的一样,而且我错过了一些信息或语法,这将使这成为可能。
这是我第一次进入ORM世界,所以我很抱歉,如果有一些简单的东西我错过了。我尽最大努力研究Google上的文档和其他问题,但迄今为止还没有运气。