[英]Sequelize order by join table
我有一個Duel
類型,每個Duel
都有一個玩家列表。 這是我的查詢和關系:
const duel = Duel.findByPk(id, {
include: duelRelations,
});
const duelRelations = [{
model: User,
as: 'players',
include: [{
model: DuelPokemon,
required: false,
as: 'duelPokemons',
}],
}, {
model: DuelActionLog,
required: false,
as: 'logs',
}];
關系:
// Each duel has many users
Duel.hasMany(User, {
foreignKey: 'duel_id',
as: 'players',
});
我想要得到的players
陣列通過排序createdAt
的領域duel_players
表。 我嘗試了order
值的不同組合,但沒有任何效果。 不知道怎么定義。
任何的想法?
謝謝
您應該使用sequelize.col()
在findByPk
選項的order
屬性中指定要作為排序依據的連接表中的列。 每個按條目排序是一個包含兩部分(列,然后是順序)的數組,您可以傳入多個條目以按多列排序。
我將duelRelations
移到選項中以使其更易於閱讀。 在您的示例中,您將User
別名為players
, DuelPokemon
為duelPokemons
。 請注意,您需要為每個Model
定義這些關聯。 您的問題提到了在您的示例中不存在的duel_players
,但我認為您的意思是說players.createdAt
。
const duel = Duel.findByPk(id, {
include: [
{
model: User,
as: 'players',
include: { // can be an object to include single table
model: DuelPokemon,
required: false,
as: 'duelPokemons',
},
},
{
model: DuelActionLog,
required: false,
as: 'logs',
},
],
order: [[sequelize.col('players.createdAt', 'DESC']],
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.