我有以下情況,我的應用程序有兩個實體:框和具有N到N關係的項目。我正在使用sequelize與MySQL。是否有可能使用sequelize命令中間關係表?
我使用僞代碼來表示表:使用以下通過關係
Box {
id: Integer primary key
name: String
}
Item {
id: Integer primary key
name: String
}
我已經在兩個方向上建立的模式與關係的hasMany:
Box.hasMany(Item, { through: Box_Item });
Item.hasMany(Box, { through: Box_Item });
Box_Item {
id_box: Integer,
id_item: Integer,
item_order: Integer
}
隨着primary_key(id_box,id_item)。
我測試了它,我可以在我的實例對象myBox上調用myBox.getItems(),並輕鬆獲取它所有的項目。
我可以撥打電話爲
BoxModel.findOne({
where: { id: 1 },
include: [{ model: ItemModel }]
});
,它會自動理解存在通過Box_Item模型之間的關係,正確地搞定一切,但我沒有收到由item_order字段排序的結果。該字段是從1到N的數字,表示該框內的項目順序。
我試圖
BoxModel.findOne({
where: { id: 1 },
include: [
{
model: ItemModel,
order: 'item_order'
}
]
});
但似乎sequelizejs不支持爲了裏面包括尚未(在檢查他們的GitHub庫)。
我試圖強迫
BoxModel.findOne({
where: { id: 1 },
order: '`box_model`.`item_order`'
include: [ { model: ItemModel } ]
})
通過查詢sequelize尋找創造,但它只是把ORDER BY在兩個不同的地方(內部INNER JOIN,並在查詢結束後,不知道爲什麼。 ..),我得到了一個錯誤。
所以我在stackoverflow上搜索了這個(1),發現了一些問題,但我沒有得到一個使用ORM做這件事的好方法。
當請求特定的箱子物品時,如何獲得按item_order字段排序的物品?