簡體   English   中英

按連接表順序排列

[英]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別名為playersDuelPokemonduelPokemons 請注意,您需要為每個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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM