J'ai un ensemble complexe de modèles associés. Les modèles sont associés à l'aide de tables de jointure, chacune avec un attribut appelé "ordre". J'ai besoin de pouvoir interroger le modèle parent "Page" et inclure les modèles associés, et trier ces associations par le champ "ordre".
Ce qui suit n'a aucun effet sur l'ordre de tri des résultats:
db.Page.findAll({
include: [{
model: db.Gallery,
order: ['order', 'DESC'],
include: [{
model: db.Artwork,
order: ['order', 'DESC']
}]
}],
})
Je pense que vous pouvez faire:
db.Page.findAll({
include: [{
model: db.Gallery
include: [{
model: db.Artwork
}]
}],
order: [
[ db.Gallery, 'order', 'DESC' ],
[ db.Gallery, db.ArtWork, 'order', 'DESC' ]
]
})
Si vous utilisez également 'as' et disons que vous souhaitez commander par 'createdDate', la requête ressemble à ceci:
DbCategoryModel.findAll({
include: [
{
model: DBSubcategory,
as: 'subcategory',
include: [
{
model: DBProduct,
as: 'product',
}
],
}
],
order: [
[
{model: DBSubcategory, as: 'subcategory'},
{model: DBProduct, as: 'product'},
'createdDate',
'DESC'
]
]
})
order: [
[ db.Sequelize.col('order'), 'DESC'], /*If you want to order by page module as well you can add this line*/
[ db.Gallery, db.ArtWork, 'order', 'DESC' ]
]